如何在C#中使用正则表达式查找以特定单词开头的HTML属性?

如何在C#中使用正则表达式查找以特定单词开头的HTML属性?,c#,regex,C#,Regex,我有html代码,jQuery向其中添加了随机属性,如: <td style='font-size: x-large;' jquery9202340423042='22423423424'> 使用c#Regex,我想查找并删除任何以jquery开头的属性 我有下面的代码,但它删除了所有属性: public static void Main(string[] args) { string before ="<td style='font-size: x-large

我有html代码,jQuery向其中添加了随机属性,如:

<td style='font-size: x-large;' jquery9202340423042='22423423424'>

使用c#Regex,我想查找并删除任何以jquery开头的属性

我有下面的代码,但它删除了所有属性:

public static void Main(string[] args)
{
     string before ="<td style='font-size: x-large;' jquery9202340423042='22423423424'>";

     //string after = Regex.Replace(before, regexImgSrc, "<$1>");
     //string regexImgSrc = @"<(table|tr|td)[^>]*?" + "jquery9202340423042" + @"\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>";

    string after = Regex.Replace(before, @"(?i)<(table|tr|td)(?:\s+(?:""[^""]*""|'[^']*'|[^""'>])*)?>", "<$1>");

     Console.WriteLine(after);
}
publicstaticvoidmain(字符串[]args)
{
字符串在“”之前;
//字符串after=Regex.Replace(before,regexImgSrc,“”);
//字符串regexImgSrc=@“]*?”+“jquery9202340423042”+@“\s*=\s*[“”]?([^'>]+?)[“”][^>]*?>”;
=Regex.Replace之后的字符串(在@“(?i)]*)*)?>,“”);
控制台写入线(后);
}
您需要使用以下选项:

Regex.Replace(before, @"(jquery\d*=[\"']\d*[\"'])", "");

它将替换任何遵循模式的内容,其中XXX是任意数字,为什么要用Regex执行此操作

Regex对于这项工作来说绝对是错误的工具(即使粗略地看一眼,这对您来说可能并不明显)

使用正则表达式可能适用于特定情况,但始终适用

使用类似的HTML解析器,您可以更明智地实现这一点。现在您可以执行以下操作:

string before ="<td style='font-size: x-large;' jquery9202340423042='22423423424'>";
var doc = new HtmlDocument();
doc.LoadHtml(before);
var el = doc.DocumentNode.FirstChild;
var attrsToRemove = el.Attributes.Where(att => att.Name.StartsWith("jquery")).ToList();
attrsToRemove.ForEach(a => a.Remove());
Console.WriteLine(el.OuterHtml);
string before=”“;
var doc=新的HtmlDocument();
doc.LoadHtml(之前);
var el=doc.DocumentNode.FirstChild;
var attrsToRemove=el.Attributes.Where(att=>att.Name.StartsWith(“jquery”)).ToList();
attrsToRemove.ForEach(a=>a.Remove());
控制台写入线(el.OuterHtml);

是否要将
更改为
?是。你说得对。我把这个问题重复到惯用的问题上来,是为了防止其他人认为处理HTML的正确解决方案是使用正则表达式。不是,你才是真正的男人!。谢谢你,托马斯@舒艾,不客气。顺便问一下,它是否恰好是
jqueryXXX=“XXX”
(使用双引号)?它是这样的:谢谢。实际上,我首先厌倦了HtmlAgilityPack,但我意识到代码太长,我需要对整个HTML文档而不仅仅是一行这样做。这就是为什么我决定用正则表达式来做。但现在我回到了HtmlAgilityPack,它工作得很好。