我正在尝试使用逻辑条件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
我正在尝试打印所有已匹配的单词。代码需要读出“ pies osa”之后的所有单词。使用给定的正则表达式,只有两个匹配项:-
Pszczol 10
和Kon 15
。 最佳答案
您可以使用
"\\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个以上的字符字符\s*
-0+空格\d+
-1个以上的数字Java code:
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