我正在尝试使用逻辑条件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 10Kon 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

10-07 22:10