正則表達式 - Java:字符串替換帶序號
問題描述
原文本:
片仔癀(<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)等。
現利用正則表達式可以替換到目標文本,就是序號那一塊無法完成(無法循環)
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++;}
問題解答
回答1:你的代碼里面問題太多了
String str='片仔癀(<span label='粉色背景' >603567</span>.SH)、'+'天士力(<span label='綠色背景' >600535</span>.SH)、'+'片仔癀(<span label='粉色背景' >603567</span>.SH)'+'和昆藥集團(<span label='金色背景' >600422</span>.SH)等。';String patternStr='(<spans+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 標簽是不是沒有結束啊
回答2:參考這個:https://stackoverflow.com/que...
試著把replaceAll換成replaceFirst,每次只替換第一個,然后累加i。
回答3:a標簽里面'改成’,試試
相關文章:
1. android - NavigationView 的側滑菜單中如何保存新增項(通過程序添加)2. 這段代碼既不提示錯誤也看不到結果,請老師明示錯在哪里,謝謝!3. 老師 我是一個沒有學過php語言的準畢業生 我希望您能幫我一下4. Thinkphp5.1報錯不支持Redis5. php7.3.4中怎么開啟pdo驅動6. ueditor上傳服務器提示后端配置項沒有正常加載,求助!!!!!7. 提示語法錯誤語法錯誤: unexpected ’abstract’ (T_ABSTRACT)8. 關于thinkphp 5.1中,ajax提交數據url的格式寫法,加花括號就出錯,請老師指點9. tp5 不同控制器中的變量調用問題10. http://run.php.cn/在線PHP程序運行結果不正確
