3

次の文字列があります。

here "is 'a' \"string\" that" does contain a 'lot of "weird"' stuff "i" to 'find'

is 'a' \"string\" thatlot of "weird"iおよびを抽出したいfind

何か案は?ありがとう!

4

2 に答える 2

2

このパターンで試すことができます:

/"((?:[^"\\]+|\\"|\\)*)"|'((?:[^'\\]+|\\'|\\)*)'/g

二重引用符内のコンテンツはグループ 1 にあり、単一引用符内のコンテンツはグループ 2 にあります。

\"注意:上記のパターンを検出できる の前に別の\がある場合、\\はリテラルと見なされ、引用はエスケープされないため、このソリューションはエスケープされた引用に対して完全に防水ではあり\ません!

\\"このトラップを回避するために、奇数のバックスラッシュが に置き換えられている場合を確認すると(?:\\{2})*\\"、最初のパターンは次のようになります。

/"((?:[^"\\]+|(?:\\{2})*\\"|\\)*)"|'((?:[^'\\]+|(?:\\{2})*\\'|\\)*)'/g
于 2013-07-24T11:20:03.587 に答える
2

この否定的な後読みベースの正規表現はあなたのために働くはずです:

/(["']).*?(?<!\\)\1/g

ライブデモ: http://www.rubular.com/r/X3etmgKFNH

Javascript などの後読みをサポートしない正規表現

/(['"])(?:\1|.*?[^\\]\1)/g

ライブデモ: http://www.rubular.com/r/SQyEYIPS4l

于 2013-07-24T11:27:35.147 に答える