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

如何使用Python正则表达式从字符串中提取指定列表内容

问题根源

你的代码返回None是两个核心错误导致的:

  • 正则规则完全不符合目标格式:你写的r"(\[,\]])"仅能匹配[,]]这类无意义字符,根本无法识别单引号包裹元素的列表结构。
  • 匹配方法选型错误:fullmatch()要求正则表达式和整个输入字符串完全匹配才会返回结果,你要提取的是长字符串里的局部子串,这个方法从一开始就不适用。
可直接运行的实现代码

用findall()做全局子串匹配,正则规则专门定位「左方括号 + 单引号包裹的字符串元素(逗号分隔) + 右方括号」的结构,会自动跳过字符串里[6785]这类纯数字的方括号内容,精准命中你要的两个列表:

import re

pattern_matcher = re.compile(r"\['[^']*'(?:\s*,\s*'[^']*')*\]")
alien_string = "Offering ['item1', 'item2', 'item3'] (4331)[6785]    Requesting ['item4', 'item5'] (6998)[6766]. {0.255457} (0 left in queue)..."

matches = pattern_matcher.findall(alien_string)
print(matches)

运行输出:

["['item1', 'item2', 'item3']", "['item4', 'item5']"]

如果你需要把提取到的字符串转成可直接操作的Python列表对象,用ast.literal_eval()做安全转换即可,不用手动拆分字符串:

import ast
parsed_lists = [ast.literal_eval(item) for item in matches]
# 转换后结果为真正的列表:[['item1', 'item2', 'item3'], ['item4', 'item5']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:06:09