re.fullmatch()
re.fullmatch() 函数用于在一个字符串的开头和结尾匹配整个字符串,如果有匹配返回一个匹配对象,否则返回None。
语法:
re.fullmatch(pattern, string, flags=0)
参数解释:
- pattern: 正则表达式字符串
- string: 要匹配的字符串
- flags: 正则表达式的修饰符,用来控制匹配模式
返回值:
函数返回一个匹配对象,如果不匹配返回None。
注意事项:
- re.fullmatch() 的 pattern 要求全匹配,即要求字符串开头和结尾都匹配整个正则表达式。
- 如果正则表达式有分组,返回的是最外层分组匹配到的结果。
示例
它从字符串开头和结尾匹配一个字符串,查找的是数字串
import re
s = "123"
match = re.fullmatch(r'\d+', s)
if match:
print(match.group())
else:
print("匹配失败")
输出结果为:
123
匹配一个字符串是否是合法的日期时间格式
import re
s = "2019-01-01 12:00:00"
pattern = r'^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$'
match = re.fullmatch(pattern, s)
if match:
print("合法的日期时间格式")
else:
print("不是合法的日期时间格式")
输出结果为:
合法的日期时间格式
re.fullmatch()函数的re.DOTALL修饰符
re.DOTALL修饰符用来让 . 匹配包括换行符在内的任意字符,默认情况下 . 匹配除换行符外的任意字符。re.fullmatch() 函数也支持 re.DOTALL 修饰符。
语法:
re.fullmatch(pattern, string, flags=0)
参数解释:
- pattern: 正则表达式字符串
- string: 要匹配的字符串
- flags: 正则表达式的修饰符,用来控制匹配模式
返回值:
函数返回一个匹配对象,如果不匹配返回None。
注意事项:
- re.fullmatch() 的 pattern 要求全匹配,即要求字符串开头和结尾都匹配整个正则表达式。
- 如果正则表达式有分组,返回的是最外层分组匹配到的结果。
示例
用 re.DOTALL 修饰符来匹配一个字符串中包含换行符的文本
import re
s = "hello\nworld"
pattern = r'^hello.*world$'
match = re.fullmatch(pattern, s, flags=re.DOTALL)
if match:
print("匹配成功")
else:
print("匹配失败")
注意,这里的正则表达式中使用 .*,表示匹配任意字符(包括换行符)任意次数。输出结果为:
匹配成功
用 re.DOTALL 修饰符来匹配一个 HTML 标签中的文本
import re
s = "hello\nworld"
pattern = r'(.*?)'
match = re.fullmatch(pattern, s, flags=re.DOTALL)
if match:
text = match.group(1)
print(text)
else:
print("匹配失败")
输出结果为:
hello
world