正则表达式匹配数学公式不符合预期,求排查原因
问题原因
你的正则匹配范围过大,核心问题出在贪婪匹配上:
- 正则里的
[^$]*是贪婪模式,它会尽可能多匹配所有非$的字符。从第一个$(也就是$xy$的开头$)开始,它会直接吞掉两个$包裹区段之间的所有文本,一直到最后一个$($f(x, y)$的结尾$)之前的内容。 - 再加上前后的
\S*会抓取$周边的非空白字符,最终就把从$xy$-plane.到$f(x,的一大段内容都算成了一个匹配项,而不是分别匹配两个独立的$包裹内容。
修正方法
把贪婪的[^$]*改成非贪婪匹配[^$]*?,让它匹配到第一个闭合的$就停止,修正后的正则:
/\S*\$\$?[^$]*?\$\$?\S*/gi
这样就能精准匹配到你想要的$xy$-plane.和$f(x, y)$两个目标内容。
内容的提问来源于stack exchange,提问作者kyle belle
相关产品推荐
相关产品推荐

