Python括号并仅返回正则表达式的某些部分

时间:2013-08-06 21:40:34

标签: python regex

我有一个我正在循环的字符串列表。我有以下正则表达式(item是我在任何给定时刻循环的字符串):

regularexpression = re.compile(r'set(\d+)e', re.IGNORECASE)
number = re.search(regularexpression,item).group(1)

我想要它做的是返回在它们之前设置了单词的数字和在它们之后的字母e。

但是,我还希望它返回在它们之前设置的数字和在它们之后的x。如果我使用以下代码:

regularexpression = re.compile(r'set(\d+)(e|x)', re.IGNORECASE)
number = re.search(regularexpression,item).group(1)

它不仅仅返回数字,而且还返回e或x。有没有办法使用括号将我的正则表达式分组为多数而不返回括号中的所有内容?

2 个答案:

答案 0 :(得分:3)

您的示例代码似乎已经很好了,但要回答您的问题,您可以使用(?:)语法创建非捕获组,例如:

set(\d+)(?:e|x)

此外,在此特定示例中,您只需使用字符类:

set(\d+)[ex]

答案 1 :(得分:3)

看来你不仅仅关注.group(1);你有正则表达式中定义的两个捕获组。

您可以使用(?:...)代替(...)使第二组无法捕获:

regularexpression = re.compile(r'set(\d+)(?:e|x)', re.IGNORECASE)