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