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

时间:2015-01-29 03:42:15

标签: regex pcre

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

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

1 个答案:

答案 0 :(得分:1)

你走了:

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

Demo

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

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

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

Demo

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