VSCode中正则表达式的使用

894 阅读1分钟

我最近在写Markdown文档,例如$f_1=2x$是一个行内公式,现在我想把所有的行内公式在前后都加上空格,好和文字拉开一段距离。

这个正则表达式的需求如下

  1. 识别所有行内公式,在两边分别加一个空格。如some$...$text,变成some $...$ text
  2. 排除独占一行的居中公式。如$$...$$
  3. 识别两个相邻的行内公式,中间只加入一个空格。如$i$$j$,变成$i$ $j$
  4. 识别中文标点符号,相邻的位置不加空格。如some$...$,,变成some $...$,

不能只用\$[^$]+\$匹配,需要看前面一个字符还是不是$以及后面一个字符是不是$,如果前后都是,则这是一个单行公式,不需要操作。

有没有方法能匹配中文字符?

经过多次尝试,我并没有实现上面的功能,下面是一些替代方案。

将所有中文标点前面的行内公式加空格

查找(\s|)(\$[^$]+\$[,。(、:]),替换 $2。该正则实现了匹配如 $arr$,$arr$(等行内公式,对于前面已有空格的不做处理,没有空格的加入空格。

将所有中文标点后面的行内公式加空格

查找([,。)、:]\$[^$]+\$)(\s|),替换$1 。该正则实现了匹配如:$arr$,$arr$ 等行内公式,对于后面已有空格的不做处理,没有空格的加入空格。