我有几个字符串,我正在尝试使用以下格式的正则表达式解析:
FIELDA
:wiz 和FIELDB
:foo 和FIELDB
:bar 和FIELDB
:baz.......
FIELDB
:(某个值)模式将出现 0 到 N 次,始终用术语AND
分隔。FIELDA
始终存在
是否有可用于捕获所有值的正则表达式模式:
wiz, foo, bar, baz
您可以使用基于环顾四周的正则表达式并使用此正则表达式匹配您想要的所有值,
(?<=FIELD[AB]:)S+(?= AND|$)
正则表达式解释:
(?<=FIELD[AB]:)
- 正面查看后面,以确保匹配的文本前面有FIELDA
或FIELDB
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