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

如何编写Python正则表达式规则提取字符串中的13和46?

提取三位数字中的首尾数字(13和46)解决方案

嘿,这事儿不难!咱们先回顾下你原来的代码,然后一步步调整正则规则来实现需求。

首先,原代码是这样的:

>>> my_words = 'ABC 123 456 www'
>>> my_words
'ABC 123 456 www'
>>> import re
>>> p = re.compile(r'\d{3}')
>>> p.findall(my_words)
['123', '456']

要从每个三位数字组里提取首尾两位(也就是123取1+3=13,456取4+6=46),可以用捕获组来实现,具体代码如下:

>>> import re
>>> my_words = 'ABC 123 456 www'
>>> # 正则规则:捕获第一个数字,跳过中间的,再捕获第三个数字
>>> p = re.compile(r'(\d)\d(\d)')
>>> # findall会返回捕获组的元组列表
>>> raw_matches = p.findall(my_words)
>>> raw_matches
[('1', '3'), ('4', '6')]
>>> # 把每个元组里的字符拼接成完整字符串
>>> result = [''.join(match) for match in raw_matches]
>>> result
['13', '46']

正则规则解释:

  • (\d):用括号包裹的第一个\d是捕获组,会匹配并保存三位数字里的第一个数字(比如123里的1)
  • \d:无括号的\d仅匹配中间的数字(比如123里的2),但不会把它加入结果
  • (\d):第二个捕获组,匹配并保存三位数字里的第三个数字(比如123里的3)

如果你想更简洁,也可以把拼接步骤和正则调用合并成一行:

>>> [''.join(m) for m in re.findall(r'(\d)\d(\d)', my_words)]
['13', '46']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:11:25