Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么
len(re.findall('[0-9999][/][0-9999]', '15/11/2012'))
正确返回 2,但是
len(re.findall('[0-9999][/][0-9999][/]', '15/11/2012'))
返回 0?它不应该返回 1 吗?
你误解了字符类。表达式[abc123]匹配单个字符,即括号中的字符之一。-是字符类中的范围运算符,但正则表达式不知道数字范围,只有字符串范围。换句话说,[0-9999]相当于[0-9],您只是指定9重复时间。
[abc123]
-
[0-9999]
[0-9]
9
您发现 2 与第一个正则表达式匹配的原因是您正在匹配5/1和1/2. 第二个正则表达式没有匹配任何一位数字的灵活性,因此失败了。
5/1
1/2
例如,返回 2 和 1 结果的正确表达式是
[0-9]+/[0-9]+
和
[0-9]+/[0-9]+/
分别。被+称为量词。
+