推荐答案
在 Python 中,re
模块提供了多种用于处理正则表达式的函数。以下是一些常用的函数:
- re.match(pattern, string, flags=0): 从字符串的起始位置匹配正则表达式,如果匹配成功则返回一个匹配对象,否则返回
None
。 - re.search(pattern, string, flags=0): 在字符串中搜索正则表达式的第一个匹配项,如果找到则返回一个匹配对象,否则返回
None
。 - re.findall(pattern, string, flags=0): 返回字符串中所有与正则表达式匹配的非重叠模式,结果以列表形式返回。
- re.finditer(pattern, string, flags=0): 返回一个迭代器,生成字符串中所有与正则表达式匹配的非重叠模式的匹配对象。
- re.sub(pattern, repl, string, count=0, flags=0): 使用
repl
替换字符串中所有与正则表达式匹配的子串,返回替换后的字符串。 - re.split(pattern, string, maxsplit=0, flags=0): 根据正则表达式模式分割字符串,返回分割后的列表。
- re.compile(pattern, flags=0): 将正则表达式编译为一个正则表达式对象,可以重复使用。
本题详细解读
re.match
re.match
函数用于从字符串的起始位置匹配正则表达式。如果匹配成功,返回一个匹配对象;否则返回 None
。这个函数只匹配字符串的开始部分,即使字符串中间有匹配的内容也不会被捕获。
import re result = re.match(r'\d+', '123abc') if result: print("Match found:", result.group()) else: print("No match")
re.search
re.search
函数在字符串中搜索正则表达式的第一个匹配项。与 re.match
不同,re.search
会扫描整个字符串,直到找到第一个匹配项。
import re result = re.search(r'\d+', 'abc123def') if result: print("Match found:", result.group()) else: print("No match")
re.findall
re.findall
函数返回字符串中所有与正则表达式匹配的非重叠模式,结果以列表形式返回。这个函数非常适合用于提取字符串中的所有匹配项。
import re result = re.findall(r'\d+', '123abc456def789') print("Matches found:", result)
re.finditer
re.finditer
函数返回一个迭代器,生成字符串中所有与正则表达式匹配的非重叠模式的匹配对象。与 re.findall
类似,但它返回的是匹配对象,而不是字符串。
import re matches = re.finditer(r'\d+', '123abc456def789') for match in matches: print("Match found:", match.group())
re.sub
re.sub
函数用于替换字符串中所有与正则表达式匹配的子串。你可以指定一个替换字符串或一个函数来生成替换内容。
import re result = re.sub(r'\d+', 'NUM', '123abc456def789') print("Replaced string:", result)
re.split
re.split
函数根据正则表达式模式分割字符串,返回分割后的列表。你可以指定最大分割次数。
import re result = re.split(r'\d+', '123abc456def789') print("Split result:", result)
re.compile
re.compile
函数将正则表达式编译为一个正则表达式对象,可以重复使用。这在需要多次使用同一个正则表达式时非常有用,可以提高效率。
import re pattern = re.compile(r'\d+') result = pattern.findall('123abc456def789') print("Matches found:", result)