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

求正则表达式:提取引号内内容并按分号拆分输出

如何用正则提取引号内内容并按分号拆分逐行输出

需求说明

需要从目标文本中提取双引号包裹的所有内容,再以分号为分隔符拆分后逐行输出,规则如下:

  • 引号内可包含0到任意数量的分号,作为内容分隔符
  • 每行仅存在一对引号
  • 引号内的内容可由除分号、引号外的任意字符组成

输入文本

-from:"azerty;y9uiuih;qwsdf"
-to:"ftyg hjhh;w__g_-91"

预期输出

azerty
y9uiuih
qwsdf
ftyg hjhh
w__g_-91

已尝试正则的问题

你之前用的正则 (?![[:alnum:]]+:)([[:alnum:]]+| |-|_)+ 存在两个核心问题:

  1. 没有精准锁定双引号的范围,容易误匹配引号外的内容
  2. 匹配规则过于局限,只允许字母数字、空格、下划线和减号,没法覆盖规则里允许的其他字符

解决方案

分两步处理就能完美实现需求:

步骤1:提取引号内的所有内容

用正则 "([^"]+)" 匹配输入文本,捕获组1就是每个引号包裹的完整内容:

  • ":匹配开头的双引号
  • ([^"]+):捕获除双引号外的所有字符(自动符合规则3里“除分号、引号外任意字符”的要求,分号会被保留在捕获内容中)
  • ":匹配结尾的双引号

用这个正则匹配输入文本后,会得到两个捕获结果:
azerty;y9uiuih;qwsdf 和 ftyg hjhh;w__g_-91

步骤2:按分号拆分并逐行输出

把上面得到的两个字符串分别按分号 ; 拆分,再将所有拆分后的元素依次输出,就能得到预期的逐行结果。

快捷替换方案(适用于支持正则替换的工具)

如果用文本编辑器或正则工具的替换功能,可以两步完成:

  1. 第一步替换:查找 ^.*?"([^"]+)".*$,替换为 $1,这一步会把每行的非引号内容全部移除,只保留引号内的部分
  2. 第二步替换:查找 ;,替换为 \n,把分号替换成换行符,直接得到逐行输出的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:15:00