详解Python re.fullmatch.end函数:返回匹配的子串结束位置的索引

  • Post category:Python

下面开始讲解Python的re模块re.fullmatch()函数。

1. 作用

re.fullmatch(pattern, string, flags=0)函数用于判断字符串是否符合某一规则,即对整个字符串进行长度匹配,并且字符串中的所有字符都可以和模式中的对应字符相匹配。如果匹配成功,则返回匹配对象,否则返回None。

re.fullmatch()是Python 3.4版本之后新添加的方法,相较于re.match()re.search()方法更为严格,只有完全匹配成功才会返回匹配对象,而不会返回由匹配到的子串组成的列表。

其中,.end()函数是re.MatchObject对象的属性,用于返回匹配结束索引的位置。

2. 使用方法

2.1 函数语法

re.fullmatch()的函数语法如下:

re.fullmatch(pattern, string, flags=0)

其中:

  • pattern:用于匹配字符串的正则表达式模式;
  • string:待匹配的字符串;
  • flags:正则表达式的匹配模式(默认为0)。

2.2 返回值

如果匹配成功,则返回一个re.MatchObject对象,否则返回None。

2.3 使用方式

下面提供两个例子,详细说明如何使用re.fullmatch().end()函数:

例1:

import re

pattern = r'[A-Z][a-z]*'
string = 'Hello World'

match_obj = re.fullmatch(pattern, string)

if match_obj:
     print(match_obj.end())
else:
    print('匹配失败')

输出结果为:

5

解析: 因为pattern匹配规则为首字母是大写字母,后面可以有任意个小写字母,所以Hello符合该规则,而World不符合。因此,返回的匹配对象match_obj中结束索引为5,即'Hello'的长度。

例2:

import re

pattern = r'[A-Z][a-z]*'
string = 'Good morning'

match_obj = re.fullmatch(pattern, string)

if match_obj:
     print(match_obj.end())
else:
    print('匹配失败')

输出结果为:

-1

解析: 因为pattern匹配规则为首字母是大写字母,后面可以有任意个小写字母,而Good morning首字母为小写字母,所以匹配失败返回None,因此无法输出结束索引,所以为-1

2.4 flags参数

flags参数用来指定匹配模式。常用的匹配模式有:

  • re.I:忽略大小写;
  • re.M:多行匹配;
  • re.S:让.匹配包括换行符在内的所有字符。

总结

re.fullmatch()函数用于对整个字符串进行长度匹配,并且字符串中的所有字符都可以和模式中的对应字符相匹配。.end()函数是re.MatchObject对象的属性,返回匹配结束索引的位置。常用的匹配模式有:忽略大小写、多行匹配和让.匹配包括换行符在内的所有字符。