提取部分正则表达式字符串 - 极悦
首页 课程 师资 教程 报名

提取部分正则表达式字符串

  • 2021-10-28 10:44:59
  • 1047次 极悦

对于如何提取部分正则表达式字符串?小编给大家举一个例子:

有一个字符串的形式

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

 

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交