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][2]1つではなく2つの要素なのか疑問に思います。私の正規表現の正しい部分を一度に一致[1][2]せるべきではありませんか?

4

1 に答える 1

1

バックスラッシュは、正規表現で物事をエスケープするために使用されます。\"単に、を意味し"ます。ブラックスラッシュの後に二重引用符を付けて、のように記述し \\"ます。

これは、あらゆる種類のエスケープを可能にするもう少し柔軟な式です。

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