请帮忙解读这个正则表达式

来源:百度知道 编辑:UC知道 时间:2024/04/30 18:57:48
<.*?>

这是过滤HTML的函数里的正则表达式,我看不太懂,.匹配除换行外的任意字符,*重复N次,?是重复0次或1次,这样为什么就能把“<b>文字</b>”的<b>和</b>匹配出来?

我知道这样也可以达到效果:<[^>]*> 就是<和>之间不能有>,否则就把文字也过滤掉了。
对了,后面那个应该是<.[^>]*>

*?是一个整体,它是“忽略优先”的,也就是匹配这个位置的字符时先尝试匹配后面的位置,不能匹配再尝试匹配被*?修饰的位置。而单独一个*,是“匹配优先”的,也就是它会一次匹配尽可能多的字符,到它已经不能匹配了,再来匹配它后面的位置,如果后面不能匹配,它就把已经被它匹配的字符一个个地“吐”出来,供后面的表达式来匹配。这叫做正则表达式的“回溯”。