Python 正则表达式,匹配多个整数
下面的代码输出的是空白,而不是'11',我搞不清楚为什么。把[0-9]*
换成[0-9]{1,2}
就能输出'11'。谁能帮帮我?
import re
test_string = 'cake_11xlfslijg'
pattern = '.*(?P<order>[0-9]*)'
result = re.compile(pattern).search(test_string)
if result:
print 'result'
print result.group('order')
else:
print result
4 个回答
1
因为 *
的意思是:可以重复任意次数。在你的正则表达式 .*
中,.
代表任何一个字符,也就是说它可以匹配所有的字符串,包括数字 [0-9]
。
6
你的正则表达式应该是这样的
pattern = '(?P<order>[0-9]+)'
- 去掉了开头的 .*,因为它会贪婪地匹配整个字符串。
- 使用了 [0-9]+,这样可以匹配数字,至少要有一个数字,如果没有数字就会返回 None。
11
试试 [0-9]+
。这里的 *
表示“零个或多个”,而在你的字符串开头,确实可以有零个或多个数字。