注册

详解Python re.fullmatch.start函数:返回匹配的子串开始位置的索引

Python re.fullmatch.start函数的作用

re.fullmatch(pattern, string) 函数用于尝试将整个字符串与指定的正则表达式模式匹配,如果匹配成功则返回一个匹配对象,否则返回None。

re.fullmatch.start([group=0]) 函数则用于返回指定匹配对象的起始位置。如果没有匹配成功,则会抛出 AttributeError 异常。

re.fullmatch.start函数使用方法

import re

pattern = r'\d+'
string = 'hello 123 world'

match_obj = re.fullmatch(pattern, string)
if match_obj:
    print("匹配成功!")
    print(match_obj.start())
else:
    print("匹配失败!")

上述代码将字符串 string 中的连续数字提取出来并存储在名为 match_obj 的匹配对象中。在判断匹配成功后,我们使用 start() 函数来获取数字在字符串中的起始位置。结果会输出 6,也就是数字 123 在字符串中的起始位置。

再来看一个更为复杂的例子。

import re

pattern = r'(\d+)-(\d+)-(\d+)'
string = '2021-12-31'

match_obj = re.fullmatch(pattern, string)
if match_obj:
    print("匹配成功!")
    print(match_obj.start())
    print(match_obj.start(2))
else:
    print("匹配失败!")

上述代码将字符串 string 中的三组数字提取出来存储在名为 match_obj 的匹配对象中。在判断匹配成功后,我们使用 start() 函数获取整个匹配在字符串中的起始位置,结果会输出 0,也就是整个字符串与正则表达式的匹配起始位置。另外,我们也使用了 start(2) 函数获取第二组数字在字符串中的起始位置,结果会输出 5,也就是数字 12 在字符串中的起始位置。

通过这两个例子,我们可以看到 re.fullmatch.start() 函数的用法非常简单。只需要将匹配对象传递进去即可返回指定匹配对象的起始位置。