手机
当前位置:查字典教程网 >脚本专栏 >python >python正则表达式中的括号匹配问题
python正则表达式中的括号匹配问题
摘要:问题:m=re.findall('[0-9]*4[0-9]*','[4]')可以匹配到4.m=re.findall('([0-9])*4([...

问题:

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]'),返回结果就是要匹配的结果了。

【python正则表达式中的括号匹配问题】相关文章:

python 输出一个两行字符的变量

Python常用正则表达式符号浅析

python 正则表达式 概述及常用字符

python正则表达式修复网站文章字体不统一的解决方法

python re正则表达式模块(Regular Expression)

python列表与元组详解实例

python生成器的使用方法

python读取注册表中值的方法

python中 ? : 三元表达式的使用介绍

Python正则表达式介绍

精品推荐
分类导航