說我有以下字符串Java的正則表達式的多模式集團更換
String Context = "old1 old2 old3 old4 old5 old6"
我希望做一個模式:(old2).*(old4)
所以字2將是$1
和word4將是$2
。
是否有任何函數或方法可以同時替換兩個字符串?僅使用組變量($1
和$2
)?
因此,我可以指定$1
將變爲new2
和$2
將變爲new4
。 我不希望有找到字符串old2
和old4
,並更換到new2
和new4
說我有以下字符串Java的正則表達式的多模式集團更換
String Context = "old1 old2 old3 old4 old5 old6"
我希望做一個模式:(old2).*(old4)
所以字2將是$1
和word4將是$2
。
是否有任何函數或方法可以同時替換兩個字符串?僅使用組變量($1
和$2
)?
因此,我可以指定$1
將變爲new2
和$2
將變爲new4
。 我不希望有找到字符串old2
和old4
,並更換到new2
和new4
如何簡單replace
"old1 old2 old3 old4 old5 old6".replace("old2", "new2").replace("old4", "new4");
當然
原始字符串和替換目標並更換更換可以是變量。
這可能是容易出錯的解決方案。如果OP想要更換old2和old4的地方怎麼辦?第一次用'old4'替換'old2',然後用'old2'替換'old4',你將只用'old2'結束,而不用'old4'。 – Pshemo
是的,雖然這不是一個白癡證明的解決方案,但我覺得對於新手來說,它是一種易於閱讀和理解的解決方案。我不確定OP的Java級別或者他的真實意圖,所以不管它是否適合他是不知道的。 –
只有一組所需
如果我的理解,這就是你需要:
String replaced = yourString.replaceAll("old2(.*?)old4", "new2$1new4");
說明
old2
匹配文字字符(.*?)
懶洋洋地匹配字符(他們捕捉到第1組),達...old4
new2
更換,第1組的您可以考慮使用正向前查找內容和new4
這裏。
String s = "old1 old2 old3 old4 old5 old6";
String r = s.replaceAll("old(?=[24])", "new");
System.out.println(r); //=> "old1 new2 old3 new4 old5 old6"
Lookarounds是零寬度斷言。它們不會消耗字符串中的任何字符。
這將刪除 「舊」 和 「新」 的斷言,要麼(2
或4
)如下替換它..
使用[java.util.regex中](http://docs.oracle.com/javase /7/docs/api/java/util/regex/Pattern.html)。 –
你能解釋一下你最後一句話的意思嗎「*我不想找到字符串old2和old4並將其替換爲new2和new4 *」?看來你想要完成你在這裏描述的內容,找到'old2'和'old4',並用'new2'和'new4'代替它。 – Pshemo