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

Regex正则表达式需求:为指定字符串位置补充引号的通用匹配模式

解决方案

要覆盖你提到的两种场景,核心问题是原正则只能匹配无空格、无引号的单个单词,无法捕获冒号后的完整内容(包括带空格、开头有引号的情况)。

正确的正则表达式

使用以下正则来捕获Part_Name或Part_Description冒号后的全部内容:

(?<=Part_(Name|Description): )(.*)

这个正则通过正向断言定位到目标标签的冒号后,再用(.*)捕获后续所有字符(包括空格、开头引号),直到行尾。

调整后的C#代码

string partDes = "&LOG Part_Name: \"blind plug"; // 示例输入
string pattern = @"(?<=Part_(Name|Description): )(.*)";

Match match = Regex.Match(partDes, pattern);

if (match.Success)
{
    string content = match.Groups[1].Value.TrimEnd(); // 去除行尾多余空格
    string processedContent;

    // 根据引号状态补全
    if (content.StartsWith("\"") && content.EndsWith("\""))
    {
        processedContent = content; // 已正确包裹引号,无需修改
    }
    else if (content.StartsWith("\""))
    {
        processedContent = content + "\""; // 仅开头有引号,补充结尾引号
    }
    else
    {
        processedContent = $"\"{content}\""; // 无引号,前后添加引号
    }

    partDes = Regex.Replace(partDes, pattern, processedContent);
}

// 输出结果示例
Console.WriteLine(partDes); // &LOG Part_Name: "blind plug"

场景验证

  1. 正常场景:输入&LOG Part_Name: vacuum gripper → 输出&LOG Part_Name: "vacuum gripper"
  2. 问题场景:输入&LOG Part_Name: "blind plug → 输出&LOG Part_Name: "blind plug"
  3. 已正确包裹:输入&LOG Part_Description: "test component" → 输出保持不变

原正则的问题

原正则(?<=Part_(Description|Name): )[^\""\s]+使用[^\""\s]+匹配字符,意味着只能匹配不包含引号和空格的连续片段,遇到空格或引号就会停止匹配,导致无法捕获完整内容(比如vacuum gripper只能匹配vacuum,"blind plug只能匹配blind),自然处理不了问题场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:50:17