什么是正则表达式和C#代码来去除除链接以外的任何html标记?

什么是正则表达式和C#代码来去除除链接以外的任何html标记?,c#,javascript,sql,regex,sql-server-2005,C#,Javascript,Sql,Regex,Sql Server 2005,我在SQLServer2005中创建了一个CLR用户定义函数,用于清理大量数据库表 任务是删除除链接以外的几乎所有标记('a'标记及其'href'属性)。所以我把问题分为两个阶段。1.创建用户定义的sql server函数,以及2。创建sql server脚本以更新调用clr函数的所有相关表 对于用户定义的函数和受限环境,我更喜欢使用本机库。这意味着,例如,不使用Html敏捷包 在javascript中,这个正则表达式显然做了正确的工作: <\s*a[^>]\s*href=(.*)

我在SQLServer2005中创建了一个CLR用户定义函数,用于清理大量数据库表

任务是删除除链接以外的几乎所有标记(
'a'
标记及其
'href'
属性)。所以我把问题分为两个阶段。1.创建用户定义的sql server函数,以及2。创建sql server脚本以更新调用clr函数的所有相关表

对于用户定义的函数和受限环境,我更喜欢使用本机库。这意味着,例如,不使用Html敏捷包

在javascript中,这个正则表达式显然做了正确的工作:

 <\s*a[^>]\s*href=(.*)>(.*?)<\s*/\s*a>
]\s*href=(.*)>(.*)
至少,根据

但是,我不知道如何将其(特别是捕获组部分)转换为C代码,以将文本用作输出的一部分

例如,如果输入为:

如何保存文本
“http://example.com“
“一些文本”
作为C#代码输出的一部分,同时剥离任何其他可能的html标记(及其内容)?

不像Jordan的那样防弹,而是使用匹配的示例:

var pattern = @"<.*href=""(?<url>.*)"".*>(?<name>.*)</a>";
var matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
    var groups = match.Groups;
    Console.WriteLine("{0}, {1}", groups["url"], groups["name"]);
}
var模式=@“(?*”;
var matches=Regex.matches(输入,模式);
foreach(匹配中的匹配)
{
var groups=match.groups;
WriteLine(“{0},{1}”、组[“url”]、组[“name”]);
}

您的正则表达式完全错误:

<\s*a[^>]\s*href=(.*)>(.*?)<\s*/\s*a>
      ↑            ↑
      1.           2.
]\s*href=(.*)>(.*)
↑            ↑
1.2.
  • 这导致
    
    ├───────────────────────────┤ ├─┤
    第1组grp2
    

  • 最后。我制作了一个单独的.net控制台程序,将HtmlAgilityPack(HAP)和查询SQL Server结合在一起。在程序中,我确实使用了一个简单的正则表达式来分离片段,并使用HAP检索了href和锚文本,然后用它完成了最后的合成,除去了文本、数字和一些标点符号以外的任何其他字符。

    考虑输入:
    。你的代码会声称
    主页
    是URL。到目前为止,你已经收到了几个答案,所有这些答案在正则表达式中都有严重的错误。我对此发表了评论,而作者显然大多删除了他们的答案。这是否足以证明使用正则表达式很难做到正确?那么,对于手头的任务,我还能做些什么呢?
    <a href='/one'>One</a> <a href='/two'>Two</a>
            ├───────────────────────────┤ ├─┤
                       group 1            grp2