如何编写正则同时匹配%和其ASCII编码%实现包裹内容一次性替换
可以通过正则的「或匹配」逻辑实现单次替换覆盖两种场景,修改后的代码如下:
String newStr = "待处理原字符串".replaceFirst("(?:%|%).*?(?:%|%)", "replaced text");
正则逻辑说明
(?:%|%):非捕获分组,匹配两种形式的百分号,?:表示不需要将该分组的内容单独捕获返回,|表示或逻辑,依次匹配原生%和HTML编码形式的%.*?:非贪婪匹配,确保只会匹配到距离最近的第二个百分号分隔符就停止,避免字符串存在多对百分号分隔符时匹配范围过大。如果你的业务场景可以确定目标字符串中只会存在一对百分号分隔符,也可以沿用原来的贪婪匹配写法.*。
效果验证
- 原字符串为
other text%original text%other text时,替换后得到other textreplaced textother text - 原字符串为
other text%original text%other text时,替换后同样得到other textreplaced textother text
内容的提问来源于stack exchange,提问作者Fllappy
相关产品推荐
相关产品推荐

