代码:匹配回顾后/提前多次
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