我有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);
}
答案 0 :(得分:2)
你需要使用它:
jqueryXXX='XXX'
哪个会替换模式RewriteCond
之后的任何内容,其中XXX是任意数字
答案 1 :(得分:1)
为什么要尝试使用正则表达式?
正则表达式绝对是错误的工具 (即使粗略地看一眼,这对您来说可能并不明显)。
使用Regex 可能适用于特定情况,但始终be a brittle solution。
使用像HtmlAgilityPack这样的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);