Python 正则 - search 和 find all 的区别
我正在尝试在一个网址字符串上使用Python的正则表达式。
id= 'edu.vt.lib.scholar:http/ejournals/VALib/v48_n4/newsome.html'
>>> re.search('news|ejournals|theses',id).group()
'ejournals'
>>> re.findall('news|ejournals|theses',id)
['ejournals', 'news']
根据文档中的说明,http://docs.python.org/2/library/re.html#finding-all-adverbs,search()方法会找到第一个匹配的内容,而findall()方法会找到字符串中所有可能的匹配项。
我在想,为什么即使'news'在模式中是第一个被声明的,它却没有被search捕获到。
我是不是用了错误的模式?我想检查这些关键词是否出现在字符串中。
4 个回答
0
3
re.search()
这个函数在找到第一个符合你条件的结果后就会停止,而不是在模式中找到的第一个选项。
4
你想的方向不对。这个正则表达式会在目标字符串中查找 "news"
、"ejournals"
或 "theses"
,并返回它找到的第一个。这里,"ejournals"
在目标字符串中是第一个出现的。