7

我正在尝试在 URL 字符串上使用 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() 匹配第一个并找到所有匹配字符串中所有可能的匹配项。

我想知道为什么“新闻”没有被搜索捕获,即使它是在模式中首先声明的。

我使用了错误的模式吗?我想搜索字符串中是否出现任何这些关键字。

4

4 回答 4

4

你倒着想。正则表达式遍历目标字符串寻找"news"OR "ejournals"OR"theses"并返回它找到的第一个。在这种情况下"ejournals",首先出现在目标字符串中。

于 2013-02-26T21:55:07.770 回答
3

re.search()函数在第一次出现满足您的条件后停止,而不是模式中的第一个选项。

于 2013-02-26T21:54:48.483 回答
0

请注意, searchfindall之间还有一些其他差异,此处未说明。例如:

python-regex 为什么 findall 一无所获,但搜索有效?

于 2017-08-19T14:56:24.440 回答
0

`id='edu.vt.lib.scholar:http/ejournals/VALib/v48_n4/newsome.html'

re.search('news|ejournals|theses',id).group() 'ejournals'

re.search -> 在字符串中搜索第一次出现然后退出。

re.findall('news|ejournals|theses',id) ['ejournals', 'news']

re.findall -> 在字符串中搜索所有匹配项并以列表形式返回。

于 2020-02-18T14:03:58.817 回答