1 问题背景
对接支付渠道的发起支付的接口的时候,要求传商品长描述,而商品长描述有很多html网页标签,比如
<h1></h1>
、<p></p>
等。需要将这些标签剔除掉,只传纯文本。
2 思路
用正则表达式,把这些标签都匹配上,然后用空字符串替换掉。
3 解决方案
代码如下:
public class Processor {
private static final String REG_EX = "</?[^>]+>";
public static String removeTag(String rawText) {
String result = rawText.replaceAll(REG_EX, "");
return result;
}
}
4 解释
采用的正则表达式是
</?[^>]+>
解释:
<
:表示匹配所有的<
/?
:表示/
出现0次或1次。?
就是前面的字符出现0次或1次[^>]+
:表示除了>
以外任意字符,至少1个或n个。[^x]
表示除了x以外,+
表示出现1个或n个>
:最后的>
表示以>
作为结尾