現在我正試圖學習如何使用匹配器,模式和所有的東西,但我有一個問題,我無法解決它,我敢肯定,在做一些錯誤,但我不知道是什麼,所以我來這裏尋求幫助,這裏是我的代碼:匹配器只匹配第一個結果
public static void main(String[] args) {
Pattern pattern = Pattern.compile("effect:([^:]*)(?::([^:]*))?(\\s)");
Matcher matcher = pattern.matcher("effect:health:10 effect:speed:15 ");
while (matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
}
什麼我嘗試做,是從字符串獲得的效果和它的持續時間,但效果持續時間不是100%必需的,現在問題在於它只能檢測到第一個效果,而不是第二個效果,它會打印「健康」和「10」,它最後需要一個空格不起作用,但如果我刪除'(\\ s)',它將無法工作。
英語不是我的母語,我試圖寫這最好的我可以,如果它有任何拼寫錯誤,我道歉。
好了在做了一些測試之後,它可以正常工作,感謝您的幫助,感謝網頁,這非常有用。 –
@MaTaMoR_我喜歡regex101,因爲漂亮的顏色編碼和正確的解釋,但請注意,它不支持Java正則表達式。要獲得完整的Java正則表達式支持,您需要使用[regexplanet](http://www.regexplanet.com/advanced/java/index.html) – Andreas
嘿,對不起,因爲我們有另一個問題,我試圖獲得說明了,我希望它是這樣的: 「介紹:增刊花花公子,第二行,」 我不知道是否有可能做這樣的 「介紹:增刊花花公子,二線 反正第一個選項就夠了,問題是我不知道我到底要做什麼,現在我得到這個代碼 Pattern.compile(「description:([^ :,] *)」);但是,這將停止在第一個逗號,所以我想知道,我怎麼能讓它繼續前進到最後一個逗號? –