如何在不成组的情况下使用圆括号?

时间:2017-02-03 16:04:05

标签: regex

我想使用圆括号来使用逻辑运算符,但不使用组进行匹配。

我将用一个例子来解释:

/(synn|pack)\sRim.*?vert(\s\d*cm|\d*cm)/

第一组是(synn|pack)。我怎样才能使OR成为一个群组,所以在这个正则表达式中,我只有一个群组(\s\d*cm|\d*cm)

1 个答案:

答案 0 :(得分:1)

您应该使用非捕获组。如果组的开放pare后面的第一个字符是?:,则不会捕获该组。因此,在此示例中,您将(synn|pack)组替换为(?:synn|pack)

以下是Python的示例(.groups属性计算正则表达式所包含的组数):

>>> import re
>>> re.compile(r'(synn|pack)\sRim.*?vert(\s\d*cm|\d*cm)').groups
2
>>> re.compile(r'(?:synn|pack)\sRim.*?vert(\s\d*cm|\d*cm)').groups
1

有关详细信息,请参阅this Stack Overflow question