在表达式中找到引用FooBar
的正则表达式是什么:
"FooBar"
"Hello, FooBar!"
"Some text, FooBar, some text..."
"garbageFooBarGarbage"
答案 0 :(得分:4)
这对正则表达式来说是个难题。如果你有一行有两个或多个引用的部分,你怎么知道引用“FooBar”还是引用其他两个引用的部分?
更接近的解决方案是:
^[^"\r\n]*(?:"[^"\r\n]*"[^"\r\n]*)*[^"\r\n]*("[^"\r\n]*FooBar[^"\r\n]*")
它查看完整的字符串,^
匹配字符串的开头,然后匹配非引号。 (?:"[^"\r\n]*"[^"\r\n]*)*
这是与非引号字符之间和之后的内容匹配的引号对。然后在括号中跟随您要匹配的部分("[^"\r\n]*FooBar[^"\r\n]*")
,以便在第一个捕获组中找到它。
我也忽略了换行符。如果您想在某个地方匹配它们,只需从该字符类中删除\r\n
。
这一切都假设没有单引号且没有转义引号。使用单引号,您将完全丢失,并且可以忽略转义引号,但会使正则表达式更复杂。
答案 1 :(得分:1)
只需^\".*FooBar.*\"$
即可完成工作。
答案 2 :(得分:-1)
这应该有效:/FooBar/g
或/FooBar/gi
如果您希望它不区分大小写。 (例如:http://regexr.com?2vgs2)