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

如何将每次正则匹配结果存入同一列表实现所有匹配字符串访问

问题原因

你当前的代码在每次匹配成功后,都会在循环内部执行m_1 = []重新创建空列表,导致每轮匹配到的结果都被存入独立的新列表,无法统一汇总所有结果。

修复方法

将存储结果的列表初始化操作移到循环开始之前(仅创建一次列表),匹配到结果时直接往这个列表追加元素即可,修改后的可运行代码如下:

import re

result = []
# 直接遍历列表元素比按索引遍历写法更简洁,可读性更好
for line in new:
    match_res = re.search(r"core-\b(\d+)", line)
    if match_res:
        result.append(match_res.group(1))

# 所有循环执行完成后,result里就存了全部匹配到的字符串
print(result)

如果需要保留你原来的索引遍历写法,只需要把m_1 = []挪到for循环外面即可,逻辑完全一致。

精简写法参考

如果循环内不需要处理其他额外逻辑,也可以用列表推导式快速实现:

import re
result = [m.group(1) for line in new if (m := re.search(r"core-\b(\d+)", line))]

上面的写法用到了海象运算符:=(Python 3.8及以上版本支持),只会对每个元素执行一次正则匹配,效率比重复调用两次search的写法更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:09:18