我用一個非常簡單的例子這裏:JAVA正則表達式模式匹配replacechall重複輸入
Pattern pattern = Pattern.compile("(.*)");
Matcher matcher=pattern.matcher("10110");
String returnString = matcher.replaceAll("DATUM $1");
給出returnString = 「DATUM 10110DATUM」 而不是 「10110 DATUM」。
這裏有什麼問題?
編輯:雖然使用(。+)解決了這個問題,但它仍然是一個非常奇怪的正則表現。由於(。*)已經匹配了整個輸入,所以java會附加另一個 - empty - group,它不會作爲replaceAll語句中的第二個組(通常爲$ 2)引用。但是JAVA吐出了這第二組。幸運的是,在添加更多空組匹配之前,它確實停止。
這是一個已知的問題在很多語言攝製的''字符串匹配,然後。 Ë nd的字符串。所以,你在這裏有兩場比賽。 –
使用https://regex101.com。在這裏你可以很容易地發現問題 – Vaibs
其他在線的java正則表達式測試人員並不是那麼好: - (( – josef