You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用C#正则将<开头>结尾的匹配项包裹大括号且保留首尾

C#正则表达式实现指定替换需求

没问题,这需求用C#的正则替换就能轻松搞定!我给你拆解一下实现思路和可直接运行的代码示例:

核心思路

  • 精准匹配所有以<开头、以>结尾的片段(从你的示例来看,这里是字面量的HTML实体,而非真实的尖括号)
  • 保留匹配到的完整内容,再给它套上{}大括号
  • 替换文本中所有符合条件的实例

实现代码

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        // 你的原始文本
        string originalText = "This is <my> long <text>";
        // 正则匹配模式:非贪婪匹配从<到>的完整片段
        string regexPattern = @"<.*?>";
        // 替换规则:用{}包裹整个匹配项($0代表完整匹配内容)
        string result = Regex.Replace(originalText, regexPattern, "{$0}");

        Console.WriteLine(result);
        // 输出结果:This is {<my>} long {<text>}
    }
}

关键细节解释

  • 正则模式@"<.*?>"
    • &lt;&gt;:匹配字面量的HTML实体字符(如果你的实际需求是匹配真实的<>,把模式改成@"<.*?>"即可)
    • .*?:采用非贪婪匹配,确保只会匹配到离开头最近的&gt;,避免出现多个匹配项被合并成一个的问题(比如如果有&lt;a&gt;b&lt;c&gt;,非贪婪会匹配两个独立片段,而贪婪匹配会把整个内容当成一个匹配项)
  • 替换字符串"{$0}"$0是正则替换中的特殊变量,代表整个匹配到的内容,我们直接用大括号把它包裹起来就完成了需求。

如果需要匹配包含换行符的片段,只需要在Regex.Replace里加上RegexOptions.Singleline参数即可:

string result = Regex.Replace(originalText, regexPattern, "{$0}", RegexOptions.Singleline);

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

火山引擎 最新活动