java string通配符_java – 是否可以将replaceAll()与通配符一起使用

您应该将解析留给DOM解析器(

see this question).我几乎可以保证你必须这样做才能在< p>中找到文字.标签.

对于替换逻辑,String.replaceAll使用正则表达式,它可以进行所需的匹配.

您想要的正则表达式中的“通配符”是.*表达式.使用你的例子:

String ampStr = "This &escape;String";

String removed = ampStr.replaceAll("&.*;", "");

System.out.println(removed);

这输出此字符串.这是因为.表示任何字符,*表示“此字符0次或更多次”.所以.*基本上意味着“任意数量的字符”.然而,喂它:

"This &escape;String &anotherescape;Extended"

可能不会做你想要的,它会输出This Extended.要解决此问题,请准确指定要查找的内容而不是.字符.这是使用[^;]完成的,这意味着“任何不是分号的字符:

String removed = ampStr.replaceAll("&[^;]*;", "");

这性能优于&.* ?;对于不匹配的字符串,所以我强烈建议使用此版本,特别是因为并非所有HTML文件都包含& abc;令牌和&.*?;因此,版本可以拥有巨大的性能瓶颈.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值