python 爬虫 贪婪算法和非贪婪算法 match()
在Python中,re模块是用来使用正则表达式的。re模块提供了一个名为re.match()的函数,它用于在字符串的开始位置匹配一个模式,而这个函数在处理正则表达式时,有贪婪算法和非贪婪算法两种处理方式。
贪婪算法:
在正则表达式中,"贪婪"是指匹配尽可能多的字符。默认情况下,"*","+","?","{m,n}"等限定符都是贪婪的。例如,正则表达式"<.*>"会匹配从开始标签直到结束标签的最长可能匹配。
非贪婪算法:
在正则表达式中,"非贪婪"是指匹配尽可能少的字符。为了做到这一点,在"*","+","?","{m,n}"等限定符后面加上"?"。例如,正则表达式"<.*?>"会匹配从开始标签直到结束标签的最短可能匹配。
下面是一些使用python的re模块的match()函数的例子:
- 贪婪算法:
import re
text = "<div>Hello World!</div>"
match = re.match("<.*>", text)
print(match.group())
输出:<div>Hello World!</div>
- 非贪婪算法:
import re
text = "<div>Hello World!</div>"
match = re.match("<.*?>", text)
print(match.group())
输出:<div>
在上述例子中,我们使用了"<.*>"和"<.*?>"作为正则表达式,这两个正则表达式的主要区别就在于贪婪算法和非贪婪算法的不同。
评论已关闭