Python 的 re 模块提供了一系列功能,用于字符串的正则表达式匹配和处理。这个模块是 Python 标准库的一部分,非常强大,用于复杂的字符串处理和模式匹配。
基本功能
- re.match(pattern, string, flags=0): 从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回
None。 - re.search(pattern, string, flags=0): 扫描整个字符串并返回第一个成功的匹配。
- re.findall(pattern, string, flags=0): 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表。
- re.finditer(pattern, string, flags=0): 在字符串中找到正则表达式所匹配的所有子串,并返回一个迭代器。
- re.sub(pattern, repl, string, count=0, flags=0): 替换字符串中的匹配项。
- re.split(pattern, string, maxsplit=0, flags=0): 根据模式的匹配项来分割字符串。
编译正则表达式
使用 re.compile() 可以将一个字符串编译为正则表达式对象。这允许在多次匹配时重用正则表达式,并提高效率。
pattern = re.compile(r'\bfoo\b')
match = pattern.search('bar foo baz')
模式标志
re 模块还包括一些标志,用于修改正则表达式的行为:
- re.IGNORECASE (re.I): 忽略大小写。
- re.DOTALL (re.S): 使
.匹配任何字符,包括换行符。 - re.MULTILINE (re.M): 多行模式,影响
^和$的行为。 - re.VERBOSE (re.X): 可以给正则表达式添加注释。
正则表达式对象和匹配对象
- 正则表达式对象 (RegexObject): 由
re.compile()返回,提供正则表达式的方法。 - 匹配对象 (MatchObject): 由匹配方法(如
match()、search())返回,提供关于匹配结果的信息。
示例
匹配并提取电子邮件地址:
emails = "user1@example.com, user2@example.org"
pattern = re.compile(r'[\w\.-]+@[\w\.-]+')
print(pattern.findall(emails)) # 输出: ['user1@example.com', 'user2@example.org']
注意事项
- 正则表达式是一种编程语言,用于定义搜索模式。它们可以非常复杂,需要一定时间来学习和掌握。
- 由于正则表达式的强大功能,不当使用可能会导致意想不到的结果或性能问题。
re 模块是 Python 中进行复杂字符串处理和模式匹配的重要工具,了解和掌握其使用对于处理各种文本数据非常有帮助。