文章目录
展开
在使用 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 博大精深,保持学习。