python正则表达式中的括号匹配问题
程序员文章站
2022-06-13 19:18:48
问题:
m = re.findall('[0-9]*4[0-9]*', '[4]')
可以匹配到4.
m = re.findall('([0-9])*4([0-9]...
问题:
m = re.findall('[0-9]*4[0-9]*', '[4]')
可以匹配到4.
m = re.findall('([0-9])*4([0-9])*', '[4]')
匹配不到4.
这是为什么呢?ps,这个是一个简化的说明,我要用的正则比这个复杂,所以要用到(),表示一个序列的匹配。
补充一点,我放在notepad++中用的时候,两种写法都能匹配出来,不知道为什么python中就不行了。
答案:
python的正则中用()会进行匹配,所以返回结果是['',''],就是两个()中的匹配。要想达到原来的匹配效果,就是把4匹配出来,有两种解决方法:
1.最外层加个大括号,变成:m = re.findall('(([0-9])*4([0-9])*)', '[4]'),返回结果的第一个元素就是匹配结果了。
2.去除()的匹配结果返回,在括号前面加入?:,变成m = re.findall('(?:\d)*4(?:\d)*', '[4]'),返回结果就是要匹配的结果了。
上一篇: BAOCMS告诉你 网页布局方面对生活O2O平台设计
下一篇: Python计算程序运行时间的方法
推荐阅读
-
在Python中关于中文编码问题的处理建议
-
Python中循环后使用list.append()数据被覆盖问题的解决
-
Python2.x中str与unicode相关问题的解决方法
-
python 匹配url中是否存在IP地址的方法
-
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
-
完美解决在oj中Python的循环输入问题
-
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
-
在python3中pyqt5和mayavi不兼容问题的解决方法
-
正确的PHP匹配UTF-8中文的正则表达式
-
解决python中画图时x,y轴名称出现中文乱码的问题