Python re.search() 方法



Python re.search() 方法用于在字符串中搜索模式。如果它在字符串中的任何位置找到模式,则通过返回 match 对象来扫描整个字符串。

re.match() 方法不同,该方法仅在字符串的开头检查匹配项,而 re.search() 在字符串中的任何位置查找匹配项。如果找到匹配项,则返回 match 对象,否则返回 'None'。

此方法可用于查找字符串中的模式,而不管它们的位置如何,从而允许更灵活的模式匹配和从文本数据中提取信息。

语法

以下是 Python re.search() 方法的语法和参数 -


 re.search(pattern, string, flags=0)

参数

以下是 python re.search() 方法的参数 -

  • pattern:要搜索的正则表达式模式。
  • string:要在其中搜索的输入字符串。
  • flags(可选):这些标志控制搜索的行为。它可以是各种标志的按位 OR 组合,例如 re。IGNORECASE, re.MULTILINE 等
返回值

如果在字符串中找到模式,则此方法返回 match 对象,否则返回 None。

示例 1

以下是使用 re.search() 方法的基本示例。这里,模式'world'在字符串'Hello, world!' − 中搜索。


import re

pattern = re.compile(r'\d+')
match = pattern.match('123abc')
if match:
	 	 print(match.group()) 	

输出

123

示例 2

在此示例中,模式 '\d+-\d+-\d+' 用于匹配日期格式,捕获组用于分别提取年、月和日——


import re

result = re.search(r'(\d+)-(\d+)-(\d+)', 'Date: 2022-01-01')
if result:
	 	 print("Year:", result.group(1)) 	
	 	 print("Month:", result.group(2))	
	 	 print("Day:", result.group(3)) 	

输出

Year: 2022
Month: 01
Day: 01

示例 3

在这个例子中,?<=good 断言背后的积极外观,它检查在 'morning' 之前是否存在 'good' 而不将其包含在匹配中 -


import re

result = re.search(r'(?<=good )morning', 'Have a good morning!')
if result:
	 	 print("Pattern found:", result.group()) 	

输出

Pattern found: morning