【发布时间】:2010-09-26 15:56:20
【问题描述】:
所以我有这个正则表达式:
(^(\s+)?(?P<NAME>(\w)(\d{7}))((01f\.foo)|(\.bar|\.goo\.moo\.roo))$|(^(\s+)?(?P<NAME2>R1_\d{6}_\d{6}_)((01f\.foo)|(\.bar|\.goo\.moo\.roo))$))
现在,如果我尝试对此进行匹配:
B048661501f.foo我收到此错误:
编译中的文件“C:\Python25\lib\re.py”,第 188 行 返回_compile(模式,标志) _compile 中的文件“C:\Python25\lib\re.py”,第 241 行 raise error, v # 无效表达式 sre_constants.error:将组名“NAME”重新定义为组 9;是第 3 组如果我不能在同一个正则表达式中为两种不同的情况定义两次相同的组,我该怎么办?
【问题讨论】:
-
为我工作。回来; ('B048661501f.foo',无,'B0486615','B','0486615','01f.foo','01f.foo',无,无,无,无,无,无,无)
-
您的正则表达式中有太多括号。单独删除不必要的会大大缩短时间。
-
@muhuk 有道理。只有一组名为
NAME和一组名为NAME2。显然问题中的正则表达式是正确的。