在字符串中查找字符串

时间:2013-07-24 11:13:24

标签: javascript regex

我有以下字符串:

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

我想提取is 'a' \"string\" thatlot of "weird"ifind

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以尝试使用此模式:

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

双引号内的内容在第1组中, 单引号内的内容在第2组中。

注意:此解决方案对于转义引号并非完全防水,因为如果可以检测到上述模式的\"前面有另一个\,则\\被视为文字\,报价不再转义!

要避免此陷阱,您可以在奇数个反斜杠替换\\" (?:\\{2})*\\"后检查案例,然后第一个模式如下所示:

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

答案 1 :(得分:2)

这种基于正面观察的负面正则表达式应该对你有用:

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

现场演示:http://www.rubular.com/r/X3etmgKFNH

不支持lookbehind的正则表达式,例如的Javascript

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

现场演示:http://www.rubular.com/r/SQyEYIPS4l