C# 如何对此文本进行正则表达式替换?

C# 如何对此文本进行正则表达式替换?,c#,regex,C#,Regex,如何对此文本执行正则表达式替换: <span style=\"text-decoration: underline;\">Request Block Host</span> to `<u>Request Block Host</u>` 请求阻止主机 `请求块主机` 到目前为止,我有这个,假设“text”是具有上述标记的完整字符串 text = Regex.Replace(text, "<span style=\"t

如何对此文本执行正则表达式替换:

    <span style=\"text-decoration: underline;\">Request Block Host</span> to

    `<u>Request Block Host</u>`
请求阻止主机
`请求块主机`
到目前为止,我有这个,假设“text”是具有上述标记的完整字符串

   text = Regex.Replace(text, "<span style=\"text-decoration: underline;\">.*?</span>", delegate(Match mContent)
        {
            return mContent.Value.Replace("<span style=\"text-decoration: underline;\">", "<u>").Replace("</span>", "</u>");
        }, RegexOptions.IgnoreCase);      
text=Regex.Replace(文本“.*”),委托(匹配mContent)
{
返回mContent.Value.Replace(“,”).Replace(“,”);
},RegexOptions.IgnoreCase);
var\u string=“请求块主机”;
var text=Regex.Replace(_字符串,(.*),“$1”);
:D

var\u string=“请求块主机”;
var text=Regex.Replace(_字符串,(.*),“$1”);

:D

这应该可以做到:

text = Regex.Replace(text, 
    "<span style=\"text-decoration: underline;\">(.*?)</span>", 
    "<u>$1</u>",
    RegexOptions.IgnoreCase); // <u>Request Block Host</u>
text=Regex.Replace(文本,
"(.*?)", 
"$1",
RegexOptions.IgnoreCase);//请求块主机

这将匹配组1中捕获的文本
,后跟零个或多个字符,后跟文本
。它将用
替换匹配的文本,然后是组1的内容,然后是文本

这应该可以做到:

text = Regex.Replace(text, 
    "<span style=\"text-decoration: underline;\">(.*?)</span>", 
    "<u>$1</u>",
    RegexOptions.IgnoreCase); // <u>Request Block Host</u>
text=Regex.Replace(文本,
"(.*?)", 
"$1",
RegexOptions.IgnoreCase);//请求块主机

这将匹配组1中捕获的文本
,后跟零个或多个字符,后跟文本
。它将用
替换匹配的文本,然后是组1的内容,然后是文本

您真的认为正则表达式是执行此任务的最佳工具吗?Html Agility Pack(或者至少是xml解析器)不是更合适吗?我大部分解析都使用linq,因此,如果有简单的解决方案,我更喜欢Regex.Replace。让我知道。您也可以随意提出使用xml解析器的想法。您真的认为正则表达式是这项工作的最佳工具吗?Html Agility Pack(或者至少是xml解析器)不是更合适吗?我大部分解析都使用linq,因此,如果有简单的解决方案,我更喜欢Regex.Replace。让我知道。也可以随意使用xml解析器给出一个想法。
Regex.Replace(code,“\(\.\*\)”,“]+下划线[^>]+>([^”)
:我不认为需要对每个字符进行转义…我在LinqPad中运行了您的示例,结果不太好…Steiner-谢谢,但是,您的示例可能不起作用,因为我的字符串中有多个like等。我已经在用不同的方法替换它们,因此,不想对所有内容进行大量处理。我非常确定@Quetzalcatl我的观点是,你的模式太宽了。它将匹配任何开头标记和结尾标记,而且非常贪婪。p.s.w.g-我正在尝试测试这一点,“$1”是什么意思。我想用我所有的文本替换这些标记。在我的情况下,用“请求块主机”所以,这就是我的问题,我将如何替换以请求块主机
Regex.replace(代码,“\(\.\*\)”,“]+下划线[^>]+>([^”)
:我不认为需要对每个字符进行转义…我在LinqPad中运行了您的示例,结果不太好…Steiner-谢谢,但是,您的示例可能不起作用,因为我的字符串中有多个like等。我已经在用不同的方法替换它们,因此,不想对所有内容进行大量处理。我非常确定@Quetzalcatl我的观点是,你的模式太宽了。它将匹配任何开头标记和结尾标记,而且非常贪婪。p.s.w.g-我正在尝试测试这一点,“$1”是什么意思。我想用我所有的文本替换这些标记。在我的情况下,用“请求块主机”.所以,这是我的问题,我将如何替换请求块Host@user2085236
(*)
在模式中是一个组。因为它是第一个出现的组,所以它被称为组1。替换字符串中的
$1
表示组1的内容,所以输出将是该组中捕获的任何内容,并由
标记包围。@user2085236
(.*)模式中的
是一个组。由于它是出现的第一个组,因此它被称为组1。替换字符串中的$1表示组1的内容,因此输出将是该组中捕获的由标记包围的内容。