代碼:匹配回顧後/提前多次
public static void main(String[] args) {
String mainTag = "HI";
String replaceTag = "667";
String text = "92<HI=/><z==//HIb><cHIhi> ";
System.out.println(strFormatted(mainTag, replaceTag, text));
mainTag = "aBc";
replaceTag = "923";
text = "<dont replacethis>abcabc<abcabcde>";
System.out.println(strFormatted(mainTag, replaceTag, text));
}
private static String strFormatted(String mainTag, String replaceTag, String text) {
return text.replaceAll("(?i)(?<=<)" + mainTag + "(?=.*>)", replaceTag);
}
所以,我想更換mainTag
(變量)的replaceTag
(可變)只有內標籤(<...>
)。
在上面我想在裏面<...>
與667
所有出現更換mainTag HI
(不區分大小寫)的例子,但我的代碼只替換第一次出現。
實例:
92<HI=/><z==//HIb><cHIhi>
預期輸出:
92<667=/><z==//667b><c667667>
(mainTag = 「HI」,replaceTag = 「667」)
<dont replacethis>abcabc<abcabcde>
預期輸出:
<dont replacethis>abcabc<923923de>
(mainTag =「aBc」,replaceTag =「923」);
注:我的代碼是錯誤的,不僅是因爲他只替換1次,而且還因爲它只有在「mainTag」成功的「<」,換句話說工作時,回顧後只適用於一個獨特的情況。
嘗試使用代碼格式(行首的四個空格或反斜槓中的代碼包裝,即'')發佈。額外的\ \使這無法理解。 –
您希望從'HIb'更改爲'667b',但不會將'hi'從'replacethis'更改爲'replacet667s'。 – rock321987
@ rock321987我添加了更多代碼和信息。 – developer033