![](/img/trans.png)
[英]Replace multiple occurrencies of a substring with a single occurrence of it
[英]How to replace a continuous occurrence of a substring with a single substring?
我在android froom中解析了一个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>
如您所见,标签多次出现。
现在,我完成了hit和trial,用户方法如replaceAll()
,但是它们替换了所有出现的情况。
我想要的是,当我传递一个子字符串来查找时,说“ <b>
”,然后它应该替换并说上述字符串中的前五个连续的加粗标签,并用单个“ <b>
”标签。
有什么建议么
所需结果:- <p dir="ltr"><b>qwert</b><b>y</b></p>
如果我正确理解了您的问题,则可以尝试使用此正则表达式:
(<[^>]+>)\\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
然后也引用第一个捕获的标签。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.