0

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

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。有没有办法使用括号将我的正则表达式分组为位而不返回括号中的所有内容?

4

2 回答 2

3

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

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

此外,在这个特定示例中,您可以只使用一个字符类:

set(\d+)[ex]
于 2013-08-06T21:44:38.870 回答
3

看来您不仅在看.group(1);您在正则表达式中定义了两个捕获组。

您可以使用(?:...)而不是使第二组不捕获(...)

regularexpression = re.compile(r'set(\d+)(?:e|x)', re.IGNORECASE)
于 2013-08-06T21:44:54.497 回答