用于捕获单词分隔术语的正则表达式



我有几个字符串,我正在尝试使用以下格式的正则表达式解析:

FIELDA:wiz 和FIELDB:foo 和FIELDB:bar 和FIELDB:baz.......

FIELDB:(某个值)模式将出现 0 到 N 次,始终用术语AND分隔。FIELDA始终存在

是否有可用于捕获所有值的正则表达式模式:

wiz, foo, bar, baz

您可以使用基于环顾四周的正则表达式并使用此正则表达式匹配您想要的所有值,

(?<=FIELD[AB]:)S+(?= AND|$)

正则表达式解释:

  • (?<=FIELD[AB]:)- 正面查看后面,以确保匹配的文本前面有FIELDAFIELDB
  • S+- 匹配一个或多个非空格文本
  • (?= AND|$)- 积极向前看,以确保匹配的文本后跟AND或字符串末尾
  • ,使用$

正则表达式演示

Java 代码演示

String s = "FIELDA:wiz AND FIELDB:foo AND FIELDB:bar AND FIELDB:baz";
Pattern p = Pattern.compile("(?<=FIELD[AB]:)\S+(?= AND|$)");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}

指纹

wiz
foo
bar
baz

最新更新