python 中括号匹配

abc=re.compile("\[0\]")这么写的为了匹配出"[0]"这个字符串,但是出现了以下错误Traceback(mostrecentcalllast):Fil... abc=re.compile("\[0\]")

这么写的为了匹配出"[0]"这个字符串,但是出现了以下错误

Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled/xxxxxxxxxx.py", line 7, in <module>
searchObj = re.search( abc, line, re.M|re.I)
File "C:\Python27\lib\re.py", line 146, in search
return _compile(pattern, flags).search(string)
File "C:\Python27\lib\re.py", line 244, in _compile
raise ValueError('Cannot process flags argument with a compiled pattern')
ValueError: Cannot process flags argument with a compiled pattern
不加\又会被认为中括号内匹配带0的字符串,所以很郁闷,求前辈指点迷津
展开
 我来答
高二步
2018-03-13
知道答主
回答量:3
采纳率:100%
帮助的人:2604
展开全部
python的正则中用()会进行匹配,所以返回结果是['',''],就是两个()中的匹配。要想达到原来的匹配效果,就是把4匹配出来,有两种解决方法:

1.最外层加个大括号,变成:m = re.findall('(([0-9])*4([0-9])*)', '[4]'),返回结果的第一个元素就是匹配结果了。
2.去除()的匹配结果返回,在括号前面加入?:,变成m = re.findall('(?:\d)*4(?:\d)*', '[4]'),返回结果就是要匹配的结果了。
bdwisyou7d
推荐于2018-03-13 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1070万
展开全部

我这边试验没有任何问题。

>>> import re
>>> re.compile("\[0\]")
<_sre.SRE_Pattern object at 0x02C11320>
>>> abc=re.compile("\[0\]")
>>>

不过建议你换成这样子。

abc=re.compile("\\[0\\]")

两种方式,都可以匹配结果都对。


我怀疑是你的python版本的问题,你在python2.7.6以上版本再试一下。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式