注册

详解Python re.fullmatch.lastindex函数:返回最后匹配的组的索引

Python re.fullmatch.lastindex 函数详解

1. 简介

在 Python 的 re 模块中,fullmatch 函数用于从开头到结尾进行正则匹配。而 lastindex 函数则用于返回最后成功匹配的索引位置。例如,如果正则表达式匹配成功,但是有多个重复的字符串,那么就会返回最后一次匹配到的字符串的索引位置。

2. 语法

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

参数说明:

  • pattern:必需,表示正则表达式。
  • string:必需,表示要匹配的字符串。
  • flags:可选,表示正则表达式的匹配模式,如 re.IGNORECASE,re.MULTILINE 等。

返回值:

  • lastindex:返回一个整数,表示最后成功匹配的位置索引,如果没有匹配成功,则返回 None。

3. 实例说明

实例1:匹配身份证号码

下面的示例代码将演示如何使用 re.fullmatch.lastindex 函数查找身份证号码中的出生日期。

import re

id_card = '440111199001011998'

# 匹配身份证号中的出生日期
match = re.fullmatch(r'(\d{6})(\d{4})(\d{2})(\d{2})\d{3}[X\d]', id_card)
if match:
    print(f'出生日期:{match.group(2)}/{match.group(3)}/{match.group(4)}')
    print(f'最后匹配的位置索引:{match.lastindex}')
else:
    print('身份证号码不符合要求。')

输出结果为:

出生日期:1990/01/01
最后匹配的位置索引:4

实例2:匹配 IP 地址

下面的示例代码将演示如何使用 re.fullmatch.lastindex 函数从 IP 地址中提取出数值部分。

import re

ip_addr = '192.168.1.1'

# 匹配 IP 地址并提取出数值
match = re.fullmatch(r'(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})', ip_addr)
if match:
    print(f'IP 地址:{ip_addr}')
    print(f'数值格式:{match.group(1):>3}.'
          f'{match.group(2):>3}.{match.group(3):>3}.{match.group(4):>3}')
    print(f'最后匹配的位置索引:{match.lastindex}')
else:
    print('IP 地址格式不对。')

输出结果为:

IP 地址:192.168.1.1
数值格式:192.168.  1.  1
最后匹配的位置索引:4

4. 注意事项

  • 如果正则表达式中有多个括号,那么 lastindex 返回的位置索引将是最后一个括号的索引值。
  • 如果正则表达式中没有括号,则 lastindex 返回 None。