首页 文章

在Perl兼容正则表达式中检测带双引号和反斜杠转义的双引号括起的字符串

提问于
浏览
0

我想检测带有正则表达式的双引号括号字符串 .
我这样做很简单: /"[^"]*"/
但是这不允许在字符串中使用双引号,所以我理想情况下允许通过像 \" 那样转义双引号,当然这也需要允许 \\ 用于单个反斜杠,否则字符串永远不会以反斜杠结尾 .
我怎么能做到这一点?理想情况下,与Perl兼容的正则表达式 .

PS:无需转义单引号,也无法使用它们来封闭字符串 .

1 回答

  • 1

    干得好:

    "(?:\\.|[^"])*"
    

    Demo

    对于字符串中的每个字符,匹配反斜杠后跟任何内容,或匹配不是引号的字符 .

    如果您需要优化的东西,可以选择以下方法:

    "(?>[^\\"]++|\\.)*+"
    

    Demo

    它基本上使用占有量词来避免回溯 .

相关问题