我在android froom中解析了一个带有spannable字符串的html字符串。 : -
<p dir="ltr"><b><b><b><b><b>qwert</b></b></b></b></b><b><b><b><b><b><b>y</b></b></b></b></b></b></p>
如您所见,标签有多处出现。
现在我已经完成了点击和试用,用户方法如replaceAll()
,但它们会替换所有出现的事件。
我想要的是,当我通过子字符串查找时,让我们说&#34; <b>
&#34;,然后它应该替换,让我们说上面的前五个连续粗体标签一个&#34; <b>
&#34;标签
任何建议
必填结果: - <p dir="ltr"><b>qwert</b><b>y</b></p>
答案 0 :(得分:5)
如果我理解你的问题,你可以试试这个正则表达式:
(<[^>]+>)\\1+
并替换为:
\\1
在代码中......
String test = "<p dir=\"ltr\"><b><b><b><b><b>qwert</b></b></b></b></b><b><b><b><b><b><b>y</b></b></b></b></b></b></p>";
String out = test.replaceAll("(<[^>]+>)\\1+", "$1");
输出:
<p dir="ltr"><b>qwert</b><b>y</b></p>
(<[^>]+>)
匹配并捕获第1组,它找到的第一个标记。
\\1
指的是第一个捕获的标记。 +
表示无限重复(嗯,限制是一个很大的数字,我认为你不必担心)。
替换$1
然后也引用第一个捕获的标记。
答案 1 :(得分:2)