开始讲解之前确保你已经了解 Python 正则表达式的基本使用和相关知识,如果还没有可以先去学习一下。
re.fullmatch
fullmatch
函数是 re 模块提供的一个正则表达式匹配函数,它可以匹配整个字符串并检查是否符合指定的正则表达式。相比于其他匹配函数,fullmatch
要求整个字符串完全匹配正则表达式,所以通常情况下需要在正则表达式的两端加上^和$表示字符串的开始和结束。
下面是 fullmatch
函数的语法格式:
re.fullmatch(pattern, string, flags=0)
其中:
pattern
是指定的正则表达式;string
是要匹配的字符串;flags
是可选参数,表示编译标志,比如 re.IGNORECASE 表示忽略大小写。
函数会返回一个 match 对象,如果匹配成功则返回 match 对象,否则返回 None。
re.MULTILINE
MULTILINE
是 re 模块提供的一个标志,用于控制正则表达式匹配的行为。使用 MULTILINE
标志可以让正则表达式的 ^ 和 $ 操作符不仅匹配字符串的开头和结尾,同时也能匹配每行的开头和结尾。
在 MULTILINE
标志下,^ 表示匹配行的开头,$ 表示匹配行的结尾。例如,如果我们有一个字符串包含多行文本:
apple
banana
orange
使用正则表达式 ^apple$
只能匹配到第一行,而使用正则表达式 ^apple$
并启用 MULTILINE
标志可以匹配所有行。
下面是示例代码:
import re
# 匹配字符串 'apple\nbanana\norange'
string = 'apple\nbanana\norange'
# 匹配每行的开头和结尾
pattern = re.compile('^apple$', re.MULTILINE)
match = pattern.search(string)
if match:
print("Match Found:", match.group())
else:
print("Match Not Found.")
输出结果为:
Match Found: apple
接下来我们可以使用 fullmatch
和 MULTILINE
函数实现更加复杂的匹配,下面给出两个实例说明:
实例 1
假设我们有以下字符串:
apple
banana
pear
orange
现在我们想要使用正则表达式匹配出字符串的第二行和第三行,可以使用以下代码:
import re
# 匹配字符串 'apple\nbanana\npear\norange'
string = 'apple\nbanana\npear\norange'
# 匹配第二行和第三行
pattern = re.compile('^banana\npear$', re.MULTILINE)
match = pattern.fullmatch(string)
if match:
print("Match Found:", match.group())
else:
print("Match Not Found.")
输出结果为:
Match Found: banana\npear
实例 2
假设我们有以下字符串:
apple is a fruit.
banana is a fruit.
pear is a fruit.
orange is a fruit.
现在我们想要使用正则表达式匹配出以单词 is
结尾的行,可以使用以下代码:
import re
# 匹配字符串 'apple is a fruit.\nbanana is a fruit.\npear is a fruit.\norange is a fruit.'
string = 'apple is a fruit.\nbanana is a fruit.\npear is a fruit.\norange is a fruit.'
# 匹配以单词 'is' 结尾的行
pattern = re.compile('\w+ is$', re.MULTILINE)
matches = pattern.findall(string)
if matches:
print("Matches Found:", matches)
else:
print("Matches Not Found.")
输出结果为:
Matches Found: ['apple is', 'banana is', 'pear is', 'orange is']
通过上面的两个实例,我们可以看到 fullmatch
和 MULTILINE
函数的使用场景和方法,提供了更加灵活和强大的正则表达式匹配功能,可以有效地应对复杂的匹配需求。