如何在C#中使用正则表达式查找以特定单词开头的HTML属性?
我有html代码,jQuery向其中添加了随机属性,如:如何在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
<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,它工作得很好。