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
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

