正则表达“...... FooBar ......”?

时间:2011-12-19 06:16:27

标签: regex

在表达式中找到引用FooBar的正则表达式是什么:

"FooBar"
"Hello, FooBar!"
"Some text, FooBar, some text..."
"garbageFooBarGarbage"

3 个答案:

答案 0 :(得分:4)

这对正则表达式来说是个难题。如果你有一行有两个或多个引用的部分,你怎么知道引用“FooBar”还是引用其他两个引用的部分?

更接近的解决方案是:

^[^"\r\n]*(?:"[^"\r\n]*"[^"\r\n]*)*[^"\r\n]*("[^"\r\n]*FooBar[^"\r\n]*")

here on Regexr

它查看完整的字符串,^匹配字符串的开头,然后匹配非引号。 (?:"[^"\r\n]*"[^"\r\n]*)*这是与非引号字符之间和之后的内容匹配的引号对。然后在括号中跟随您要匹配的部分("[^"\r\n]*FooBar[^"\r\n]*"),以便在第一个捕获组中找到它。

我也忽略了换行符。如果您想在某个地方匹配它们,只需从该字符类中删除\r\n

这一切都假设没有单引号且没有转义引号。使用单引号,您将完全丢失,并且可以忽略转义引号,但会使正则表达式更复杂。

答案 1 :(得分:1)

只需^\".*FooBar.*\"$即可完成工作。

答案 2 :(得分:-1)

这应该有效:/FooBar/g/FooBar/gi如果您希望它不区分大小写。 (例如:http://regexr.com?2vgs2