Fla*_*tef 2 regex regex-greedy
我正在使用一个使用正则表达式从字符串中删除所有html标记的教程(Ruby):
product.description.gsub(/<.*?>/,'').
我不知道怎么解释?.这是否意味着:"至少有一个以前的"?在那种情况下,会不会/<.+>/更充足?
默认情况下.*是贪婪的,这意味着它尽可能匹配.因此,.*更换将改变:
This <b>is</b> an <i>example</i>.
^-------------------------^
至
This .
如果你在量词之后使用问号,那么它就会变得非贪婪,所以它尽可能地匹配.随着.*?替换工作原理如下:
This <b>is</b> an <i>example</i>.
^-^ ^--^ ^-^ ^--^
变为:
This is an example.
这与?量词的更常见用法不同,它意味着"匹配零或一".
无论哪种方式,如果您的文本是HTML,您应该使用HTML解析器而不是正则表达式.