原始文字:
片仔癀(<span label="粉色背景" >603567</span>.SH)、
天士力(<span label="綠色背景" >600535</span>.SH)、
片仔癀(<span label="粉色背景" >603567</span>.SH)
和昆藥集團(<span label="金色背景" >600422</span>.SH)等。
替換成:
片仔癀(<span label="粉色背景" ><a link="http://#link?index=1">603567</a></span>.SH)、
天士力(<span label="綠色背景" ><a link="http://#link?index=2">600535</a></span>.SH)、
片仔癀(<span label="粉色背景" ><a link="http://#link?index=3">603567</a></span>.SH)
和昆藥集團(<span label="金色背景" ><a link="http://#link?index=4">600422</a></span>.SH)等。
現(xiàn)利用正規(guī)表示式可以替換到目標文字,就是序號那一塊無法完成(無法循環(huán))
Pattern pattern = Pattern.compile("(<span.*?label=\"(*色背景)\".*?>)(.*?)(</span>)");
Matcher matcher = pattern.matcher(str);
int i=0;
while (matcher.find()) {
System.out.println(matcher.replaceAll(matcher.group(1) + "<a link=\"http://#link?index="+i+"\">" + matcher.group(3) + "</a>" + matcher.group(4)));
i++;
}
你的程式碼裡面問題太多了
String str="片仔癀(<span label=\"粉色背景\" >603567</span>.SH)、"+
"天士力(<span label=\"綠色背景\" >600535</span>.SH)、"+
"片仔癀(<span label=\"粉色背景\" >603567</span>.SH)"+
"和昆藥集團(<span label=\"金色背景\" >600422</span>.SH)等。";
String patternStr="(<span\s+label=\\".色背景\\"\s*>)(\d+)";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(str);
String strResult=str;
int i=0;
while (matcher.find()) {
i++;
String replaceTo=matcher.group(1)+
"<a link=\"http://#link?index="+i
+"\">"+matcher.group(2)+"</a>";
strResult=strResult.replaceFirst(patternStr, replaceTo);
}
System.out.println(strResult);
/* 輸出:
片仔癀(<span label="粉色背景" ><a link="http://#link?index=1">603567</a></span>.SH)、天士力(<span label="綠色背景" ><a link="http://#link?index=2">600535</a></span>.SH)、片仔癀(<span label="粉色背景" ><a link="http://#link?
index=3">603567</a></span>.SH)和昆藥集團(<span label="金色背景" ><a link="http://#link?index=4">600422</a></span>.SH)等。
* */
還有 a 標籤是不是沒有結(jié)束啊
參考這個:
https://stackoverflow.com/que...
試著把replaceAll
換成replaceFirst
,每次只替換第一個,然後累加i
。