当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《正则表达式提取部分字符串》经验,为你挑选了1个好方法。

我有一个字符串的形式

Foo
"Foo"
"Some Foo"
"Some Foo and more"

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


Foo
Foo
Foo

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

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

进一步扩大到这个

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

不起作用.

任何帮助将不胜感激!



1> Tim Pietzcke..:

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

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上直播

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有