C# 使用Regex替换Pre标记内的Html

C# 使用Regex替换Pre标记内的Html,c#,html,asp.net,regex,pre,C#,Html,Asp.net,Regex,Pre,如何替换pre标记中的Html?我更喜欢用正则表达式 <html> <head></head> <body> <div> <pre> <html> <body> -----> hello! ----< </body> </html </pre> </div> </body> ----->

如何替换pre标记中的Html?我更喜欢用正则表达式

<html>
<head></head>
<body>
<div>
<pre>

    <html>
    <body>
    -----> hello! ----< 
    </body>
    </html

</pre>
</div>
</body>

----->你好
EDIT:正如另一个答案所示,regex不完全支持HTML或XHTML,因此最好使用HTML解析器。不过,我把我的答案留在这里作为参考

您想用什么替换pre标记中的内容

我不熟悉特定的C#语法,但如果C#使用Perl风格的正则表达式,下面的PHP代码片段可能会有所帮助。下面的代码将用字符串(pre-tag content was here)替换pre-tag中的内容(刚刚使用命令行PHP客户端进行了测试):


谢谢马丁尼奥·费尔南德斯

不知怎么的,这听起来是个坏主意。如果你能说出这个问题的真正含义。对于初学者来说,这甚至不像是有效的HTML。你没有说结果应该是什么样的,或者输入应该是什么样的(你的临时样本可能没有反映现实),它来自何方,以及你为什么要用regex来做。在这种情况下,这几乎不是一个问题。我同意。。问题是什么?你想在和中更改文本吗?最好告诉我们更多的背景知识,这样我们就可以为示例提供一个像样的解决方案。对
foo
失败。但我不知道这对手术是否重要。啊,没错。将修改我的答案。@Marthinho&Samuel:Simple删除@levisos:True之后的\>即可,但会有一点明确(对于以“pre”开头的任何其他标记)。更新了一个解决方案,允许在pre标记中使用任意数量的非字符。
。认真地
<?php
$html = "<html><head></head><body><div><pre class=\"some-css-class\">
         <html><body>
         -----> hello! ----< 
         </body></html
         </pre></div></body>"; // Compacting things here, for brevity

$newHTML = preg_replace("/(.*?)<pre[^<>]*>(.*?)<\/pre>(.*)/Us", "$1(pre tag content was here)$3", $html);
echo $newHTML;
?>
new Regex(@"(.*?)<pre[^<>]*>(.*?)<\/pre>(.*)", RegexOptions.SingleLine)