re模块是Python中处理正则表达式的工具之一。其中re.fullmatch()函数可以用来匹配整个字符串是否符合指定的正则表达式。
DOTALL是re.fullmatch()函数的一个参数,用来指定匹配字符串时是否忽略换行符。
下面给出re.fullmatch()和DOTALL参数的详细说明及使用方法:
re.fullmatch()
re.fullmatch()函数用于匹配整个字符串是否符合指定的正则表达式,如果匹配成功返回匹配对象,否则返回None。
该函数的语法为:
re.fullmatch(pattern, string, flags=0)
其中:
- pattern:要匹配的模式,可以是字符串或正则表达式对象。
- string:要匹配的字符串。
- flags:可选参数,表示正则表达式的匹配模式,如是否区分大小写等。
该函数的返回值是一个匹配对象,如果没有匹配成功,则返回None。匹配对象可以通过group()方法获取匹配到的子字符串,也可以通过start()和end()方法获取匹配子字符串的起始和结束位置。
下面给出一个简单的示例:
import re
pattern = r'^\d{3}-\d{2}-\d{4}$'
string = '123-45-6789'
match_obj = re.fullmatch(pattern, string)
if match_obj:
print('匹配成功!')
else:
print('匹配失败!')
输出结果为:匹配成功!
DOTALL
DOTALL是re.fullmatch()函数的一个参数,用来指定匹配字符串时是否忽略换行符。
如果使用DOTALL参数,则‘.’可以匹配任何字符,包括换行符。如果不使用DOTALL参数,则‘.’匹配除了换行符(\n)以外的任何字符。
下面给出一个简单的示例,该正则表达式用DOTALL参数匹配多行文本:
import re
pattern = r'a.+c'
string = 'ab\nc\nad'
match_obj = re.fullmatch(pattern, string, flags=re.DOTALL)
if match_obj:
print('匹配成功!')
print('匹配到的字符串:', match_obj.group())
else:
print('匹配失败!')
输出结果为:
匹配成功!
匹配到的字符串:ab
c
另外,下面这个正则表达式不使用DOTALL参数,也可以匹配多行的文本:
import re
pattern = r'(?s)a.+c'
string = 'ab\nc\nad'
match_obj = re.fullmatch(pattern, string)
if match_obj:
print('匹配成功!')
print('匹配到的字符串:', match_obj.group())
else:
print('匹配失败!')
输出结果为:
匹配成功!
匹配到的字符串:ab
c