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

Python正则表达式提取特定字符间内容问题求助

解决方法

问题分析

你当前的正则(?<=&)(.*?)(?=&)会匹配&之间的所有内容,包括两个连续&之间的空字符串,同时保留了内容前后的空格,所以得到了带空格和空项的列表。

方案一:优化正则表达式

调整正则匹配规则,只抓取&之间非空的内容,再通过列表推导式清理空格并过滤空项:

import re
str_1 = " & peers & & apples & & lemon juice & & Strawberries & & Mellon & "
list_1 = [content.strip() for content in re.findall(r'&([^&]+)&', str_1) if content.strip()]
print(list_1)
  • &([^&]+)&:匹配被&包裹的、至少包含一个非&字符的内容,避免匹配空项
  • content.strip():去掉内容前后的空格
  • if content.strip():过滤掉处理后为空的元素(防止极端场景下的无效项)

方案二:字符串分割(更易理解,适合新手)

不用正则,直接通过字符串分割和列表推导式处理,逻辑更直观:

str_1 = " & peers & & apples & & lemon juice & & Strawberries & & Mellon & "
list_1 = [item.strip() for item in str_1.split('&') if item.strip()]
print(list_1)
  • str_1.split('&'):按&拆分字符串,得到包含空字符串和带空格项的列表
  • 后续的strip()和过滤条件,直接清理掉无效内容,留下目标元素

两种方法最终都会输出你想要的结果:['peers','apples','lemon juice','Strawberries','Mellon']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:05:25