You need to enable JavaScript to run this app. Python正则如何实现首次匹配即停止,提取指定字符串片段?
优惠活动
大模型
产品
解决方案
定价
更多

Python正则如何实现首次匹配即停止,提取指定字符串片段?

问题原因

你当前使用的.*是贪婪匹配规则,会尽可能匹配最长的符合条件的字符串,因此会一直匹配到整个文本中最后一个数字50才停止,不符合你匹配到第一个数字就结束的需求。

解决方案

把贪婪匹配改为非贪婪匹配即可,只需要在*后加?标识非贪婪,正则表达式写为r"_.*?[0-9]+"。

示例代码

import re

s = "_, _, 30, _, _, _, 50, _, _ "
# 提取首个符合规则的片段
target = re.findall(r"_.*?[0-9]+", s)[0]
print(target)
# 输出结果:_, _, 30

补充说明

  • 正则末尾加+是为了兼容多位数场景,比如100、2024这类多位数值也能完整匹配到结尾。
  • 如果需要更严谨的匹配,避免数字后出现多余字符,也可以使用正向预查限制匹配边界,正则写为r"_.*?\d+(?=[^\d]|$)",你当前的场景用基础非贪婪写法已经可以满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 16:24:03