更新时间:2021-10-28 10:44:59 来源:极悦 浏览937次
对于如何提取部分正则表达式字符串?小编给大家举一个例子:
有一个字符串的形式
Foo
"Foo"
"Some Foo"
"Some Foo and more"
需要提取引号中的值Foo,并且可以被任意数量的字母数字和空格字符包围.所以,对于上面的例子,希望输出
<NoMatch>
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
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习