2

为什么

len(re.findall('[0-9999][/][0-9999]', '15/11/2012'))

正确返回 2,但是

len(re.findall('[0-9999][/][0-9999][/]', '15/11/2012'))

返回 0?它不应该返回 1 吗?

4

1 回答 1

8

你误解了字符类。表达式[abc123]匹配单个字符,即括号中的字符之一。-是字符类中的范围运算符,但正则表达式不知道数字范围,只有字符串范围。换句话说,[0-9999]相当于[0-9],您只是指定9重复时间。

您发现 2 与第一个正则表达式匹配的原因是您正在匹配5/11/2. 第二个正则表达式没有匹配任何一位数字的灵活性,因此失败了。

例如,返回 2 和 1 结果的正确表达式是

[0-9]+/[0-9]+

[0-9]+/[0-9]+/

分别。被+称为量词

于 2013-07-27T16:14:28.487 回答