我想使用圆括号来使用逻辑运算符,但不使用组进行匹配。
我将用一个例子来解释:
/(synn|pack)\sRim.*?vert(\s\d*cm|\d*cm)/
第一组是(synn|pack)
。我怎样才能使OR
成为一个群组,所以在这个正则表达式中,我只有一个群组(\s\d*cm|\d*cm)
?
答案 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。