Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式查找和替换特定的HTML标记_C#_Regex - Fatal编程技术网

C# 使用正则表达式查找和替换特定的HTML标记

C# 使用正则表达式查找和替换特定的HTML标记,c#,regex,C#,Regex,我有一个包含动态HTML内容的字符串 我希望能够找到并替换所有特定HTML标记,并替换它们,但不能替换其中的内容 特定的HTML标记将用于一个表,即table、TR和TD。标记可能包含属性,也可能不包含属性。用C#怎么做呢 提前感谢您的帮助 不要使用正则表达式。使用 为什么不呢。e=“(

我有一个包含动态HTML内容的字符串

我希望能够找到并替换所有特定HTML标记,并替换它们,但不能替换其中的内容

特定的HTML标记将用于一个表,即table、TR和TD。标记可能包含属性,也可能不包含属性。用C#怎么做呢

提前感谢您的帮助

不要使用正则表达式。使用

为什么不呢。

e=“(<*?/*)div(+?)”;
  e = "(< *?/*)div( +?|>)";
  repl = "\\1boo\\2"; 
repl=“\\1boo\\2”;

坦白地说,我被强加给每个人的咒语弄糊涂了:永远不要在html中使用正则表达式

此功能可能足够:

public static string ReplaceTag(string input, string soughtTag, string replacementTag)
{
    return Regex.Replace(input, "(</?)" + soughtTag + @"((?:\s+.*?)?>)", "$1" + replacementTag + "$2");
}
publicstaticstringreplacetag(stringinput、stringsoughttag、stringreplacementtag)
{
返回Regex.Replace(输入“()”,“$1”+replacementTag+“$2”);
}

这是HTML解析器的任务,而不是正则表达式。在HTML和XML上使用正则表达式之前已经被要求过了。在这里有一个非常好的关于Cthulhu的回应不用了,用正则表达式。人生的一课。@Peter Gibbons:你太残忍了!嗯,我试过了。我失败了。浪费了我很多时间,我读了它。OP至少只是一种谩骂、断言、幽默和夸张。理解html是在不同的语言类中进行的,可能会提示您了解为什么在特定情况下查询可能变得笨拙的原因。但这并不意味着您可能需要在HTML上执行的每种操作都会受到HTML语言类的影响。诚然,我上面给出的解决方案并不完整,因为它将对偶数注释和引用的属性内容执行转换。但至少对于排除评论而言,一个简单的添加就足够了。排除引用的部分也不是问题。我无意中只是读了该代码中引用的部分——我将阅读其余部分。好吧,我想这是我的批评。自然语言是最高级别的语言,甚至比正则表达式或html都要高得多。这是否意味着永远不应该使用正则表达式来修改人类编写的文本?也许您应该只使用完全准确的自然语言解析器。在这种情况下,至少可以再等十年,直到这样的事情出现。)我试图做类似的事情,但我自己的正则表达式在搜索斜体标记()时也匹配图像标记()。这个解决方案完美地纠正了我的错误,尽管我修改了它,将整个标记作为单个捕获组返回:
()
[