正则表达式和OR运算符没有在Python中分组?

时间:2012-12-20 03:46:18

标签: python regex regex-group

以下是案例。我在日志文件中寻找以下模式。

所有字符串均采用AB_NCDE_N的形式。 ABCDE是固定字母,后跟下划线。 N可以是2个或3个数字。

我尝试(AB|CDE)_\d{2,3}但是返回了一个组。我不能\w{2,3}\d{2,3},因为它必须是ABCDE而不是ACFEG。省略括号也会中断。我确信解决方案很简单,但我是python和regex的新手,无法解决这个问题。

2 个答案:

答案 0 :(得分:39)

正则表达式中括号内的?:使其无法捕获。像这样:(?:AB|CDE)_\d{2,3}

请参阅此处的文档:http://docs.python.org/3/library/re.html 通过它的大约三分之一是通过非捕获语法。

答案 1 :(得分:3)

非捕获组语法为(?:...)(?:AB|CDE)_\d{2,3}也是。{{1}}。这是documented以及其他所有内容。