我有一个字符串的形式
Foo "Foo" "Some Foo" "Some Foo and more"
我需要提取Foo
引号中的值,并且可以被任意数量的字母数字和空格字符包围.所以,对于上面的例子,我希望输出
Foo Foo Foo
我一直试图让这个工作,这是我到目前为止使用lookahead/lookbehind引用的模式.这适用于"Foo"
但不适用于其他人.
(?<=")Foo(?=")
进一步扩大到这个
(?<=")(?<=.*?)Foo(?=.*?)(?=")
不起作用.
任何帮助将不胜感激!
如果引号被正确平衡并且引用的字符串不跨越多行,那么您可以简单地向前看字符串以检查是否跟随偶数引号.如果不是这样,我们知道我们在一个带引号的字符串中:
Foo(?![^"\r\n]*(?:"[^"\r\n]*"[^"\r\n]*)*$)
说明:
Foo # Match Foo (?! # only if the following can't be matched here: [^"\r\n]* # Any number of characters except quotes or newlines (?: # followed by "[^"\r\n]* # (a quote and any number of non-quotes/newlines "[^"\r\n]* # twice) )* # any number of times. $ # End of the line ) # End of lookahead assertion
在regex101.com上直播