Javascript RegEx匹配与特殊字符相同的乳胶表达式

时间:2018-12-17 19:53:59

标签: javascript regex latex

\c, \b, \n是有效的特殊字符,也是\ chapter,\ begin,\ noindent之类的乳胶表达式的开头。如何在不操纵胶乳源的情况下在Javascript中匹配这些胶乳字符串?

我正在处理node.js中的大量乳胶源,并尝试过这样的正则表达式:

var str = "\begin{comment}hello\end{comment}";
console.log( str.replace(/\\begin\{comment\}(.*?)\\end\{comment\}/g, '$1') );

有以下结果

egin{comment}helloend{comment} 

而“ hello”是预期的输出。在这种情况下,\ b是问题。

2 个答案:

答案 0 :(得分:1)

问题不在于正则表达式本身,而是替换字符串。

请注意,\表示转义字符,因此\b\e被解释为特殊字符。

查看在控制台中检查值时会发生什么:

>> var str = "\begin{comment}hello\end{comment}";
>> str;
"\u0008egin{comment}helloend{comment}"

写:

var str = "\\begin{comment}hello\\end{comment}";
console.log( str.replace(/\\begin\{comment\}(.*?)\\end\{comment\}/g, '$1') );

答案 1 :(得分:0)

您可以尝试以下模式:\\[a-z]+(\{[a-z]+\})?

它将匹配\,然后匹配一个或多个字母[a-z]+,然后(\{[a-z]+\})?将匹配零或一次匹配用括号括起来的一个或多个字母。

Demo