我有以下字符串:
here "is 'a' \"string\" that" does contain a 'lot of "weird"' stuff "i" to 'find'
我想提取is 'a' \"string\" that
,lot of "weird"
,i
和find
。
有什么想法吗?谢谢!
答案 0 :(得分:2)
您可以尝试使用此模式:
/"((?:[^"\\]+|\\"|\\)*)"|'((?:[^'\\]+|\\'|\\)*)'/g
双引号内的内容在第1组中, 单引号内的内容在第2组中。
注意:此解决方案对于转义引号并非完全防水,因为如果可以检测到上述模式的\"
前面有另一个\
,则\\
被视为文字\
,报价不再转义!
要避免此陷阱,您可以在奇数个反斜杠替换\\"
(?:\\{2})*\\"
后检查案例,然后第一个模式如下所示:
/"((?:[^"\\]+|(?:\\{2})*\\"|\\)*)"|'((?:[^'\\]+|(?:\\{2})*\\'|\\)*)'/g
答案 1 :(得分:2)
这种基于正面观察的负面正则表达式应该对你有用:
/(["']).*?(?<!\\)\1/g
不支持lookbehind的正则表达式,例如的Javascript 强>
/(['"])(?:\1|.*?[^\\]\1)/g