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

Python使用re库从列表提取特定id开头模式的技术求助

解决正则提取id+数字的问题

嘿,我来帮你搞定这个正则匹配的问题!你当前的代码有两个小问题,咱们一步步修正:

1. 原正则的核心问题

你写的r'id*'逻辑不对:*是匹配前面的字符0次或多次,这里它作用在d上,所以会匹配i、id、idd这类内容,完全没考虑后面的数字,这肯定拿不到你想要的id3、id33。

2. 正确的正则表达式

咱们要匹配的是以id开头,紧跟1个或多个数字的子串,所以正则应该写成:r'id\d+'

  • id:精确匹配这两个固定字符
  • \d:匹配任意数字(等价于[0-9])
  • +:要求前面的数字至少出现1次,确保不会匹配到单纯的id

3. 输入参数的修正

你把整个列表my_list传给了re.search,但这个函数的第二个参数必须是字符串!所以得先取列表里的第一个元素(也就是包含目标id的那个字符串)。

完整示例代码

import re

# 示例输入
sample_list = ('CDI - AB - MO - id3 - Mobile', '2018-01-12', '48,67')
# 提取包含目标的字符串
target_string = sample_list[0]
# 执行匹配
match_obj = re.search(r'id\d+', target_string)
# 检查是否匹配成功,避免报错
if match_obj:
    result = match_obj.group()
    print(result)  # 输出: id3

额外优化(可选)

如果你需要忽略大小写(比如要匹配ID3、Id33这类情况),可以加上re.I参数:

match_obj = re.search(r'id\d+', target_string, re.I)

这样就能精准提取你想要的内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:27:25