我试图使用逻辑条件AND重写我的正则表达式:
(?<="pies osa.")|(\w+\s?\d{1,2}) - now it is OR (Pipe)
我想让它作为查找字符串并检查正则表达式。
我试过了:
(?=.*"pies osa.")(?=\w+\s?\d{1,2})
- 没有为我工作
我正在使用的文字:
pies osa. Pszczol 10, miod mis kon, pies osa. Kon 15
我试图打印所有匹配的单词。代码需要在&#34; pies osa之后读出所有单词。&#34;使用给定的正则表达式,只有两个匹配: - Pszczol 10
和Kon 15
。
答案 0 :(得分:0)
您可以使用
"\\bpies\\s+osa\\W*(\\w+\\s*\\d+)"
请参阅regex demo。结果在第1组。
注意:如果数字可能丢失,请使用(\\w+(?:\\s*\\d+)?)
代替(\\w+\\s*\\d+)
。
<强>详情:
\b
- 字边界pies\s+osa
- pies
,1 +空格,osa
\W*
- 零个或多个非单词字符(\w+\s*\d+)
- 第1组捕获以下序列:
\w+
- 1 + word chars \s*
- 0+ whitespaces \d+
- 1+位数String str = "pies osa. Pszczol 10, miod mis kon, pies osa. Kon 15";
Pattern ptrn = Pattern.compile("\\bpies\\s+osa\\W*(\\w+\\s*\\d+)");
Matcher matcher = ptrn.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
// => Pszczol 10, Kon 15