寻找look-after和regex组合

时间:2016-12-17 13:42:31

标签: java regex

我试图使用逻辑条件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 10Kon 15

1 个答案:

答案 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+位数

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