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

Python正则表达式:匹配指定字符串后提取首个目标数据

解决Python正则提取第一个目标字段的问题

嘿,作为Python正则新手遇到这个问题很正常,我来给你捋清楚怎么改!

首先分析你现有代码的问题:你用的正则(?<=ethernet33\s).*(?<=\s)里,.*是贪婪匹配,它会从ethernet33后的空格开始,一直匹配到字符串里最后一个空格前的所有内容——这就是为什么你拿到了后面所有字段。

要只提取第一个目标数字串20628103568,有两种简单靠谱的修改方式:

方法1:匹配非空白字符到下一个空格

把.*换成\S+,\S代表任意非空白字符,+表示匹配1个或多个,这样就会精准停在第一个空格前:

import re
str1 = 'ethernet33 20628103568 111111 22222222222 '
match1 = re.search(r"(?<=ethernet33\s)\S+", str1)
print(match1.group())  # 输出:20628103568

方法2:用捕获组匹配数字(更精准)

既然你要提取的是数字,直接用\d+匹配数字序列,结合捕获组更直观,还能避免意外匹配非数字内容:

import re
str1 = 'ethernet33 20628103568 111111 22222222222 '
match1 = re.search(r"ethernet33\s(\d+)", str1)
print(match1.group(1))  # 输出:20628103568

这里的(\d+)是捕获组,匹配到的数字会存在group(1)里,比纯预查的写法更易读。

两种方法都能完美满足你的需求,第二种因为明确指定了数字匹配,鲁棒性更强哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:45:40