我有一点问题。
我有一段文本必须在浏览器中阅读几次。
每当我打开此文本时,都会自动启动我编写的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");

该表达式看起来有些令人费解,但这是它的分解方式:
  • (?<! ... )是负向后看的模板;
  • >是我们要确保不会出现在字符串前面的特定字符。

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

    10-08 14:57