📜  Python正则表达式:re.search() VS re.findall()(1)

📅  最后修改于: 2023-12-03 14:46:45.323000             🧑  作者: Mango

Python正则表达式:re.search() VS re.findall()

在Python中,使用正则表达式对字符串进行匹配和操作是一个非常强大的功能。其中,re.search()re.findall()是两个非常常用的函数。

re.search()

re.search()主要用于在字符串中搜索匹配正则表达式的第一个位置,并返回一个match对象。

下面是一个简单的示例,对字符串中的数字进行匹配:

import re
  
str = "I am 28 years old."
match = re.search(r'\d+', str)
if match:
    print("Match found at position %d." % match.start())
else:
    print("Match not found.")    

代码运行结果:

Match found at position 7.

在这个例子中,\d+表示匹配一个或多个数字。re.search()函数在字符串中查找匹配这个正则表达式的第一个位置,找到了数字28,并返回一个match对象。

如果匹配到了结果,则match对象中会包含以下信息:

  • string:被搜索的原始字符串;
  • re:使用的正则表达式;
  • pos:开始搜索的起点;
  • endpos:结束搜索的终点;
  • span():返回一个元组,包含匹配的起始位置和结束位置。
re.findall()

re.findall()re.search()的区别在于,它会搜索整个字符串,并返回所有匹配的结果列表。

下面是一个示例,使用re.findall()匹配字符串中所有的数字:

import re
  
str = "I am 28 years old. My weight is 60 kg."
matches = re.findall(r'\d+', str)
print(matches)

代码运行结果:

['28', '60']

使用re.findall()函数可以很方便地获取字符串中所有符合要求的数据,比如我们可以非常方便地从一个网页的源代码中提取全部的URL链接。

总结

re.search()re.findall()是两个非常常用的正则表达式函数,它们在匹配/搜索字符串时都起到了非常重要的作用。需要根据具体的需求选择使用哪一个函数,以达到最佳的效果。