re
包是Python的标准库之一,用于处理正则表达式(Regular Expressions)。正则表达式是一种强大的文本处理工具,可以用来进行字符串的搜索、替换等操作。它允许你使用一种特殊语法定义字符串模式,并基于这些模式来查找或修改文本。
以下是re
模块中一些常用的方法:
re.compile(pattern, flags=0)
将一个正则表达式的模式编译成一个正则表达式对象,这样可以在后续多次调用时提高效率。
pythonimport re
pattern = re.compile(r'\d+')
result = pattern.findall('There are 24 hours in 1 day.')
print(result) # 输出: ['24', '1']
re.match(pattern, string, flags=0)
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None
。
pythonresult = re.match(r'\d+', '24 hours in 1 day')
if result:
print("Matched:", result.group()) # 输出: Matched: 24
re.search(pattern, string, flags=0)
扫描整个字符串并返回第一个成功的匹配。
pythonresult = re.search(r'\d+', '24 hours in 1 day')
if result:
print("Found:", result.group()) # 输出: Found: 24
re.findall(pattern, string, flags=0)
找到字符串中所有与模式匹配的非重叠部分,返回一个列表。
pythonresult = re.findall(r'\d+', '24 hours in 1 day')
print(result) # 输出: ['24', '1']
re.sub(pattern, repl, string, count=0, flags=0)
替换字符串中所有与模式匹配的部分为repl
。
pythonresult = re.sub(r'\d+', '#', '24 hours in 1 day')
print(result) # 输出: # hours in # day
re.split(pattern, string, maxsplit=0, flags=0)
根据模式分割字符串,返回分割后的列表。
pythonresult = re.split(r'\s+', 'Split these words')
print(result) # 输出: ['Split', 'these', 'words']
re.IGNORECASE
或 re.I
: 忽略大小写。re.MULTILINE
或 re.M
: 多行模式,影响^
和$
的行为。re.DOTALL
或 re.S
: 使.
能匹配包括换行符在内的所有字符。re.VERBOSE
或 re.X
: 允许正则表达式被分成多行并且加入注释,增加可读性。假设我们需要从一段文字中提取所有的电子邮件地址:
pythonimport re
text = "Please contact us at support@example.com or sales@example.org."
emails = re.findall(r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+', text)
print(emails) # 输出: ['support@example.com', 'sales@example.org']