\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是问题。
答案 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]+\})?
将匹配零或一次匹配用括号括起来的一个或多个字母。