Python 正则表达式,匹配多个整数

4 投票
4 回答
22571 浏览
提问于 2025-04-16 21:55

下面的代码输出的是空白,而不是'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]+)'
  1. 去掉了开头的 .*,因为它会贪婪地匹配整个字符串。
  2. 使用了 [0-9]+,这样可以匹配数字,至少要有一个数字,如果没有数字就会返回 None。
11

试试 [0-9]+。这里的 * 表示“零个或多个”,而在你的字符串开头,确实可以有零个或多个数字。

撰写回答