我正在使用Python中的正则表达式。我知道有很多关于这方面的文档,但是我就是无法理解这个看起来很简单的例子:
在这段代码中:
我期望得到输出:
然而,该程序仅返回一个空字符串(什么都没有)。我的逻辑是指定我想要一个3位数字组,然后
在这段代码中:
import re
phoneNumRegex = re.compile(r'(\d\d\d)*')
mo = phoneNumRegex.search('My number is 415-555-4242. 423-531-5412')
print(mo.group())
我期望得到输出:
415, 555, 423, 531
然而,该程序仅返回一个空字符串(什么都没有)。我的逻辑是指定我想要一个3位数字组,然后
*
指定匹配这种类型的组0或'n'次。由于我在字符串中有多个3位数字组,所以我期望得到所有这些数字组的打印。我做错了什么?我也尝试使用+
代替*
,根据我的理解,它应该至少找到一次该组。如果我那样做,它只打印第一组,而不是像我预期的那样全部。我应该如何编写代码才能打印出所有的三位数组?
re.findall
。 - Rakesh(\d\d\d)*
的第一个匹配项是一个空字符串,因此你会得到一个空字符串。请使用不带*
的findall
。 - khelwoodsearch
只返回第一个匹配项。而且因为(\d\d\d)*
匹配一个空字符串,所以它返回了一个空字符串。如前所述,请改用findall
。 - Thibault D.