2016-12-17 29 views
1

我試圖重寫我的正則表達式使用邏輯狀況和:搜索查詢後和正則表達式組合

(?<="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

+0

哪裏是你想你的字符串匹配? – MYGz

+0

對於邏輯與:http://stackoverflow.com/questions/469913/regular-expressions-is-there-an-and-operator – MYGz

+0

@MohammadYusufGhazi我試過從你的文章,但它沒有幫助。 – user2061352

回答

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+字字符
    • \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 
+0

很高興爲你效勞。如果我的回答對你有幫助,請考慮upvoting(參見[如何在堆棧溢出?](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)) 。 –