0

我知道已经有与此非常相似的问题,但我找不到正则表达式处理\"作为转义引号。

给定输入:

he/l\"lo "//%$&$h w" t "" " "

...我希望有:

he/l\"lo
"//%$&$h w"
t
""
" "

我现在的状态是

(\"|[^" ])+|"(\"|[^"])*"

根据http://myregextester.com/index.php给了我

[0] => he/l\"lo
[1] => "//%$&$h
[2] => w"
[3] => t
[4] => ""
[5] => "
[6] => "

我想知道为什么例如[1]and[2]是两个元素而不是一个?我的正则表达式的正确部分不应该立即匹配[1][2]

4

1 回答 1

1

反斜杠在正则表达式中用于转义。\"只是意味着 a ",你想要一个黑斜线后跟一个双引号,写成 \\".

这是一个更灵活的表达式,允许各种转义:

(?:[^" \\]|\\.)+|"(?:[^"\\]|\\.)*"
于 2012-08-25T21:02:25.837 回答