正则表达式 - 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. angular.js - angular-ui-bootstrap 报错无法使用?2. javascript - swiper.js嵌套了swiper 初始设置不能向下一个滑动 结束后重新初始3. 为什么span的color非要内联样式才起作用?4. docker - 如何修改运行中容器的配置5. python - 如何修改twisted自带的日志输出格式?6. 如何使用git对word文档进行版本控制?7. 在cmd下进入mysql数据库,可以输入中文,但是查看表信息,不显示中文,是怎么回事,怎新手,请老师8. 请问一下各位老鸟 我一直在学习独孤九贱 现在是在tp5 今天发现 这个系列视频没有实战9. 老师,请问我打开browsersync出现这个问题怎么解决啊?10. html5 - H5做的手机分享页微信更新后,分享出去不再默认显示第一个图 作为缩略图

网公网安备