用于提取部分字符串的正则表达式 [英] Regular Expression to extract part of string
本文介绍了用于提取部分字符串的正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个
形式的字符串Foo
"Foo"
"Some Foo"
"Some Foo and more"
我需要提取Foo
值,该值用引号括起来,可以用任意数量的字母数字字符和空格字符括起来。因此,对于上面的示例,我希望输出为
<NoMatch>
Foo
Foo
Foo
我一直在尝试实现这一点,到目前为止,这就是我对引号使用前视/后视的模式。这适用于"Foo"
,但不适用于其他用户。
(?<=")Foo(?=")
进一步将其扩展为
(?<=")(?<=.*?)Foo(?=.*?)(?=")
不起作用。
如有任何帮助,我们将不胜感激!
推荐答案
如果引号正确平衡,并且带引号的字符串没有跨多行,则只需向前查看字符串,检查后面是否有偶数个引号。如果不是这样,我们知道我们在一个带引号的字符串中:
Foo(?![^"
]*(?:"[^"
]*"[^"
]*)*$)
说明:
Foo # Match Foo
(?! # only if the following can't be matched here:
[^"
]* # Any number of characters except quotes or newlines
(?: # followed by
"[^"
]* # (a quote and any number of non-quotes/newlines
"[^"
]* # twice)
)* # any number of times.
$ # End of the line
) # End of lookahead assertion
观看现场直播regex101.com
这篇关于用于提取部分字符串的正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文