末鑑於此字符串1990January20hello.abc我想申請正則表達式來獲得最終的字符串1990January-20hello.abc的正則表達式修改開頭和行或字符串
我想我可以這樣做:
String text = "1990January20hello.abc";
Pattern p = Patter.compile("(.*)(January|Jan)(.*)", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(text);
while (m.find()){
String val1 = m.group(2);
String val2 = val1.replace("$", "-");
text = text.replace(val1, val2);
}
當我這樣做似乎在while循環中它確實找到「1月」,但val2和文本保持1月。我究竟做錯了什麼?它就好像Java不能識別$作爲行結束/字符串。理想情況下,我想說val1.replace(「(^ | $)」,「 - 」)所以我可以得到1990-一月-20hello.abc作爲最終字符串。請幫忙。提前感謝您的建議。
你沒有很清楚地解釋規則。 「一月」可能是「一月」?或者它可以是任何其他的字符串?你想在第二個'\ d +'前添加一個'-'嗎?總是有兩套'\ d +'?此外,你給了你兩次預期的輸出,(在你的問題的開始和結束時),它們是不同的。 – Kent 2013-05-02 17:31:06