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

如何使用正则表达式提取cite标签内的逗号分隔字符串

实现方案

你可以通过两种逻辑实现需求,分别是兼容性更好的两步处理法,以及单正则一步匹配法:

方案1:两步处理法(推荐)

逻辑拆分清晰,对所有正则环境都兼容:

  1. 第一步先用你已知的正则 r'cite{(.+?)}' 全局匹配所有cite{}块,提取出大括号内的原始字符串,示例中你会得到AA,BBB, C和EE,F两个结果
  2. 第二步对每个提取到的字符串,按逗号拆分后去除每个条目的前后空格即可

代码示例(Python)

import re

input_str = "cite{AA,BBB, C}  skip{DD}   cite{EE,F}"
# 提取所有cite块内的内容
cite_contents = re.findall(r'cite{(.+?)}', input_str)
output = []
for content in cite_contents:
    # 拆分逗号并去除前后空格
    items = [item.strip() for item in content.split(',')]
    output.extend(items)

# 打印结果
for item in output:
    print(item)

运行后即可得到你需要的输出格式。

方案2:单正则一步匹配

如果你的运行环境支持可变长度正向后视(比如Python3.7+、Java等),可以直接用一条正则匹配到所有目标条目:
正则表达式为:r'(?<=cite{[^}]*)\s*([^,}]+?)\s*(?=[,}])'

正则含义说明

  • (?<=cite{[^}]*):正向后视限定匹配位置必须在cite{之后、}之前,确保只匹配cite块内的内容
  • \s*:匹配条目前的可选空格
  • ([^,}]+?):匹配非逗号、非}的内容,也就是你需要的条目
  • \s*(?=[,}]):正向前视限定匹配位置后面要么是逗号要么是},同时跳过条目后的可选空格

代码示例(Python)

import re

input_str = "cite{AA,BBB, C}  skip{DD}   cite{EE,F}"
output = re.findall(r'(?<=cite{[^}]*)\s*([^,}]+?)\s*(?=[,}])', input_str)
for item in output:
    print(item)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:45:03