java正则最短匹配

时间:2021-04-17 06:25:15
String s = "<font size=\"2\">价格 : 2100<br>跌幅 :<span" + "class=\"change_down\">-35.4</span><br>2014-10-17<br></font>"
对于上面的字符串,想要删除<>以及里面的内容,
如果用s.replaceAll("<.*>" , "")
会将所有内容都清空也就是最后s="",
这是因为正则的贪婪匹配,如果要想获得最短匹配只需
s.replaceAll("<.*?>" , ""),加个?即可解决问题

懒惰限定符:
*? 重复任意次,但尽可能少重复(最短匹配,非贪婪匹配)
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复