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

Regex.Replace精确匹配含特殊字符内容失效问题求助

问题排查与解决方案

问题原因

  • 你代码里的"\b"是退格控制字符,不是正则表达式中的单词边界元字符\b。因为没有使用逐字字符串前缀@,C#会把\b解析为ASCII退格符(U+0008),而非传递给正则引擎的匹配标记,导致正则完全匹配不到目标内容。
  • 额外的StringBuilder操作完全多余,既没有实际作用,还增加了代码复杂度。

方案1:直接用字符串替换(推荐)

你要替换的是固定字符串,不需要正则的复杂匹配逻辑,string.Replace是最简洁高效的选择:

using System;

public class Program
{
    public static void Main()
    {
        string input = "John + Daniels";
        string result = input.Replace(" + Daniels", "");
        Console.WriteLine(result); // 输出 "John"
    }
}

方案2:如果一定要用正则表达式

如果后续需要扩展匹配逻辑(比如匹配同格式的其他字符串),可以使用正确的正则写法:

  • 用逐字字符串@避免C#转义,确保正则引擎识别\b(如果需要单词边界校验)
  • 直接构造正则模式,去掉多余的字符串拼接操作
using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
        string input = "John + Daniels";
        // \b确保匹配单词末尾的边界,避免误匹配类似"Johnn + Daniels"的内容
        string result = Regex.Replace(input, @"\b + Daniels", "");
        Console.WriteLine(result); // 输出 "John"
    }
}

如果不需要严格的单词边界,正则可简化为@" + Daniels",直接匹配空格++ Daniels的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:35:02