如何在预标签内替换Html?我更愿意用Regex
做到这一点<html>
<head></head>
<body>
<div>
<pre>
<html>
<body>
-----> hello! ----<
</body>
</html
</pre>
</div>
</body>
答案 0 :(得分:0)
编辑: 如另一个答案所示,正则表达式不完全支持HTML或XHTML,因此您最好使用HTML解析器。我在这里留下我的答案供参考。
您希望将预标签内的内容替换为?
我不熟悉特定的C#语法,但是如果C#使用Perl风格的正则表达式,则以下PHP代码段可能会有所帮助。下面的代码将使用字符串“(预标记内容在这里)”替换预标记内的内容(仅使用命令行PHP客户端测试):
<?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;
?>
?
标记是为了使匹配非贪婪(在第一次出现之后停止),mU
modifiers指定“Unicode-character-support”和“单线支持”。后者对于使.
匹配换行也很重要。 [^<>]*
部分用于支持预标记中的属性,例如<pre class="some-css-class">
(除了<
或>
之外,它将匹配任意数量的字符。
更新:如下面评论中的Martinho Fernandes所示,上述正则表达式的C#语法应该类似于:
new Regex(@"(.*?)<pre[^<>]*>(.*?)<\/pre>(.*)", RegexOptions.SingleLine)
答案 1 :(得分:0)
RegEx match open tags except XHTML self-contained tags
谢谢martinho fernandes