You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式星量词(*)疑问:为何\d*匹配返回空而非字符s?

正则匹配问题解释

首先纠正一个小细节:你提到的null实际是空字符串(Python中re.search匹配到0个字符时,group(0)返回空字符串"",不会返回null)。

下面拆解原因:

  • 正则表达式\d*的定义是匹配0个或多个数字——注意这里仅针对数字字符,不是匹配非数字内容。
  • re.search会从字符串起始位置开始查找第一个符合规则的匹配:
    对于字符串"streets2345",第一个字符是s(非数字),\d*无法匹配任何数字,所以只能匹配「0个数字」,也就是空字符串,这是第一个能命中的结果,因此match.group(0)返回空字符串。
  • 你误以为会匹配s,是混淆了\d*和\D*的含义:\D才代表「非数字字符」,如果把模式改成r"\D*",才会匹配到开头的"streets"。

对比第一个例子的\d+:+要求匹配1个或多个数字,所以它会跳过前面的非数字字符,找到第一个连续数字序列2345并返回。

内容的提问来源于stack exchange,提问作者meallhour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:01:01