java-如何解决replaceAll中的replaceAll

我有一点问题.
我有一段文本必须在浏览器中阅读几次.
每当我打开此文本时,都会自动启动我编写的replaceAll.
这是非常简单,基本的,但是问题是,当我下次替换时(每次阅读此文本时),我都具有replaceAll的replaceAll.
例如我在文本中:

 

 

XIII

我要替换它

 

<b>XIII</b>

与:

 

txt.replaceAll("XIII","<b>XIII</b>")

第一次一切都很好,但是,当我再次阅读该文本时,它变成:

 

<b><b>XIII</b></b>

这是一个愚蠢的问题,但是我现在从Java开始.
我读到可能使用正则表达式.有人可以举个小例子吗?

谢谢,请原谅我英语不好.

最佳答案

您需要使用后向否定性,以防止与已标记的字符串匹配:

 

 

txt.replaceAll("(?<!>)XIII","<b>XIII</b");

该表达式看起来有些令人费解,但是它是这样分解的:

>(?&lt ;! …)是负向后看的模板;
>>是我们要确保不会出现在字符串前面的特定字符.

我还应该警告您,用正则表达式修复HTML通常会变成一个双重循环,即升级正则表达式以处理另一种特殊情况,只是看到它在下一个失败.它以一个没人能读的怪物结束,更不用说改善了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值