加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 02:29:58 所属栏目:百科 来源:网络整理
导读:我有一个字符串的形式 Foo"Foo""Some Foo""Some Foo and more" 我需要提取引号中的值Foo,并且可以被任意数量的字母数字和空格字符包围.所以,对于上面的例子,我希望输出 NoMatchFooFooFoo 我一直试图让这个工作,这是我到目前为止使用lookahead / lookbehind引
我有一个字符串的形式
Foo
"Foo"
"Some Foo"
"Some Foo and more"

我需要提取引号中的值Foo,并且可以被任意数量的字母数字和空格字符包围.所以,对于上面的例子,我希望输出

<NoMatch>
Foo
Foo
Foo

我一直试图让这个工作,这是我到目前为止使用lookahead / lookbehind引用的模式.这适用于“Foo”但不适用于其他人.

(?<=")Foo(?=")

进一步扩大到这个

(?<=")(?<=.*?)Foo(?=.*?)(?=")

不起作用.

任何帮助将不胜感激!

如果引号被正确平衡并且引用的字符串不跨越多行,那么您可以简单地向前看字符串以检查是否跟随偶数引号.如果不是这样,我们知道我们在一个带引号的字符串中:
Foo(?![^"rn]*(?:"[^"rn]*"[^"rn]*)*$)

说明:

Foo          # Match Foo
(?!          # only if the following can't be matched here:
 [^"rn]*   # Any number of characters except quotes or newlines
 (?:         # followed by
  "[^"rn]* # (a quote and any number of non-quotes/newlines
  "[^"rn]* # twice)
 )*          # any number of times.
 $          # End of the line
)            # End of lookahead assertion

在regex101.com现场直播

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读