我想检测带有正则表达式的双引号括号字符串 .我这样做很简单: /"[^"]*"/但是这不允许在字符串中使用双引号,所以我理想情况下允许通过像 \" 那样转义双引号,当然这也需要允许 \\ 用于单个反斜杠,否则字符串永远不会以反斜杠结尾 .我怎么能做到这一点?理想情况下,与Perl兼容的正则表达式 .
/"[^"]*"/
\"
\\
PS:无需转义单引号,也无法使用它们来封闭字符串 .
干得好:
"(?:\\.|[^"])*"
Demo
对于字符串中的每个字符,匹配反斜杠后跟任何内容,或匹配不是引号的字符 .
如果您需要优化的东西,可以选择以下方法:
"(?>[^\\"]++|\\.)*+"
它基本上使用占有量词来避免回溯 .
1 回答
干得好:
Demo
对于字符串中的每个字符,匹配反斜杠后跟任何内容,或匹配不是引号的字符 .
如果您需要优化的东西,可以选择以下方法:
Demo
它基本上使用占有量词来避免回溯 .