我最近在写Markdown文档,例如$f_1=2x$是一个行内公式,现在我想把所有的行内公式在前后都加上空格,好和文字拉开一段距离。
这个正则表达式的需求如下
- 识别所有行内公式,在两边分别加一个空格。如
some$...$text,变成some $...$ text - 排除独占一行的居中公式。如
$$...$$ - 识别两个相邻的行内公式,中间只加入一个空格。如
$i$$j$,变成$i$ $j$ - 识别中文标点符号,相邻的位置不加空格。如
some$...$,,变成some $...$,
不能只用\$[^$]+\$匹配,需要看前面一个字符还是不是$以及后面一个字符是不是$,如果前后都是,则这是一个单行公式,不需要操作。
有没有方法能匹配中文字符?
经过多次尝试,我并没有实现上面的功能,下面是一些替代方案。
将所有中文标点前面的行内公式加空格
查找(\s|)(\$[^$]+\$[,。(、:]),替换 $2。该正则实现了匹配如 $arr$,和$arr$(等行内公式,对于前面已有空格的不做处理,没有空格的加入空格。
将所有中文标点后面的行内公式加空格
查找([,。)、:]\$[^$]+\$)(\s|),替换$1 。该正则实现了匹配如:$arr$和,$arr$ 等行内公式,对于后面已有空格的不做处理,没有空格的加入空格。