次の文字列があります。
here "is 'a' \"string\" that" does contain a 'lot of "weird"' stuff "i" to 'find'
is 'a' \"string\" that
、lot of "weird"
、i
およびを抽出したいfind
。
何か案は?ありがとう!
次の文字列があります。
here "is 'a' \"string\" that" does contain a 'lot of "weird"' stuff "i" to 'find'
is 'a' \"string\" that
、lot of "weird"
、i
およびを抽出したいfind
。
何か案は?ありがとう!
このパターンで試すことができます:
/"((?:[^"\\]+|\\"|\\)*)"|'((?:[^'\\]+|\\'|\\)*)'/g
二重引用符内のコンテンツはグループ 1 にあり、単一引用符内のコンテンツはグループ 2 にあります。
\"
注意:上記のパターンを検出できる の前に別の\
がある場合、\\
はリテラルと見なされ、引用はエスケープされないため、このソリューションはエスケープされた引用に対して完全に防水ではあり\
ません!
\\"
このトラップを回避するために、奇数のバックスラッシュが に置き換えられている場合を確認すると(?:\\{2})*\\"
、最初のパターンは次のようになります。
/"((?:[^"\\]+|(?:\\{2})*\\"|\\)*)"|'((?:[^'\\]+|(?:\\{2})*\\'|\\)*)'/g
この否定的な後読みベースの正規表現はあなたのために働くはずです:
/(["']).*?(?<!\\)\1/g
Javascript などの後読みをサポートしない正規表現
/(['"])(?:\1|.*?[^\\]\1)/g