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

如何编写正则表达式提取含转义引号的指定结构文本内容

正则匹配解决方案

你之前编写的正则无法生效,核心原因有三点:

  • 硬编码了father|mother关键词,和实际场景的marker|abbreviation标识词完全不匹配
  • 用[^"]*匹配引号包裹内容时,没有处理转义引号\"的场景,遇到转义引号会提前终止匹配
  • 没有覆盖连接词for的场景,也没有适配字符串外层包裹引号、末尾带句号的冗余格式

可用正则表达式

以下正则兼容PCRE、JavaScript、Python等绝大多数主流正则引擎,支持转义引号识别、单/双引号包裹后缀、外层冗余字符过滤:

/^"?(.*?) is a (marker|abbreviation) (?:of|for) (?:"((?:[^"\\]|\\.)*)"|'((?:[^'\\]|\\.)*)'|(.*?))"?\.?$/

替换时使用替换串:

$1 $2 $3$4$5

正则逻辑说明

  • ^"?:匹配字符串开头可选的外层包裹双引号
  • (.*?):非贪婪捕获标识词前的前缀内容
  • is a (marker|abbreviation):匹配固定句式结构,捕获marker/abbreviation两个标识词
  • (?:of|for) :匹配标识词后的连接词of/for,不做捕获
  • 后缀内容匹配分三个分支,自动识别包裹格式:
    • "((?:[^"\\]|\\.)*)":匹配双引号包裹的后缀,支持识别转义字符(含转义双引号),捕获时自动剔除外层双引号
    • '((?:[^'\\]|\\.)*)':匹配单引号包裹的后缀,支持识别转义字符,捕获时自动剔除外层单引号
    • (.*?):匹配无引号包裹的纯文本后缀
  • "?\.?$:匹配字符串末尾可选的外层包裹双引号、可选的句尾点号

效果验证

  1. 核心用例输入:"_,\"'() is a marker of \"'_( ,)\"."
    替换输出:_,"'() marker \"'_( ,),和预期结果完全一致
  2. 示例2输入:"Test is a marker for 'testing'"
    替换输出:Test marker testing,和预期结果完全一致
  3. 示例3输入:G is a abbreviation for "GDP ('Gross Domestic Product')"
    替换输出:G abbreviation GDP ('Gross Domestic Product'),核心内容完全匹配,如需保留示例中G后的双空格,只需要把替换串中$1和$2之间的空格改成两个即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:03:50