Python 正则 - search 和 find all 的区别

7 投票
4 回答
5720 浏览
提问于 2025-04-17 17:14

我正在尝试在一个网址字符串上使用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

请注意,searchfindall之间还有一些其他的区别,这里没有提到。

例如:

python-regex 为什么findall找不到东西,而search却能找到?

3

re.search()这个函数在找到第一个符合你条件的结果后就会停止,而不是在模式中找到的第一个选项。

4

你想的方向不对。这个正则表达式会在目标字符串中查找 "news""ejournals""theses",并返回它找到的第一个。这里,"ejournals" 在目标字符串中是第一个出现的。

撰写回答