Python3 正则匹配 match 函数提示 TypeError: ‘_sre.SRE_Match’ object is not subscriptable 的解决方法

在使用 Python 正则匹配的时候,一般我们都使用 match() 函数进行匹配。re.match() 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 None。一般来说,返回之后我们可以直接获取他的值,但是有时候也会出问题,会提示 TypeError: '_sre.SRE_Match' object is not subscriptable 的错误,下面看一下这个错误的解决方法。

一、Python 正则匹配 match() 简单介绍

用法为:

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

其中:

  • pattern:匹配的正则表达式。
  • string:要匹配的字符串。
  • flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

匹配成功 re.match() 方法返回一个匹配的对象,否则返回 None。

二、获取匹配结果的方法

下面是正确的获取匹配结果的方法:

我们可以使用 group(num)groups() 匹配对象函数来获取匹配表达式:

  • group(num=0):匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
  • groups():返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

也就是说,使用 .group() 而不是直接获取,也就是最后

re.match(r'RULE', STR).group()

就能把匹配的结果取出来。

有时候也可以直接用 [0] 来获取返回结果,但是有时候用 [0] 就会出现标题提示的错误,以上就是解决方法。

三、参考文献

相关参考文献:

  • https://stackoverflow.com/questions/48269215/python-regex-from-xpath-typeerror-sre-sre-match-object-is-not-subscrip
  • http://www.runoob.com/python/python-reg-expressions.html
  • https://docs.python.org/zh-cn/3/library/re.html

Python 博大精深,保持学习。


【AD】美国洛杉矶CN2 VPS/香港CN2 VPS/日本CN2 VPS推荐,延迟低、稳定性高、免费备份_搬瓦工vps

【AD】RackNerd 推出的 KVM VPS 特价优惠,在纽约、西雅图、圣何塞和阿什本每年仅需 12.88 美元!