注册

详解Python re.fullmatch.DOTALL函数:启用 “.” 匹配任何字符模式

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