除去html标记,但<;b>;使用正则表达式c#
我想剥离所有html,但使用regex保留除去html标记,但<;b>;使用正则表达式c#,c#,regex,html-parsing,C#,Regex,Html Parsing,我想剥离所有html,但使用regex保留标记。有没有更好的方法来代替 将替换为非html标记,如$b$ 使用]*> 将$b$替换为 下面是一种只允许打开和关闭b标签的方法。任何其他标签都将被删除 var teststring = "Test <b>test</b> lorem <i>ipsum</i>"; var pattern = @"(?!</?b>)<.*?>"; // assuming open and closi
标记。有没有更好的方法来代替
替换为非html标记,如$b$]*>
下面是一种只允许打开和关闭
b
标签的方法。任何其他标签都将被删除
var teststring = "Test <b>test</b> lorem <i>ipsum</i>";
var pattern = @"(?!</?b>)<.*?>"; // assuming open and closing tags are retained
Console.WriteLine(Regex.Replace
(teststring,
pattern,
String.Empty,
RegexOptions.Multiline));
var teststring=“Test Test lorem ipsum”;
变量模式=@“(?!)”;//假设保留打开和关闭标记
Console.WriteLine(Regex.Replace
(测试字符串,
图案
字符串。空,
RegexOptions.Multiline));
输出:
Test-Test-lorem-ipsum
Regex不是解析html/xml的最佳工具。深入研究,您可以使用XPath解析它的元素并更轻松地实现您的目标。@Jean,虽然正则表达式不适合嵌套构造,但如果OP不关心嵌套(并且只关心
标记,而不管嵌套级别如何),那么正则表达式就可以正常工作。(另外,大多数HTML——特别是HTML5 HTML——都不是有效的XML。例如,
是完全合法但无效的XML)是的。我不知道还有什么其他的构造。我只想把除了b标签以外的所有标签都去掉。我只做了一个小的html片段(1000个字符),谢谢Drf。好奇的是,你的执行速度会比我的快吗?另外,我希望去除html标记,而不是对其进行编码。我根据您的评论更新了代码。很难回答的性能问题,但是(根据免责声明),我不希望这种方法对单个标签更快。但是,它可以简化添加其他标记的过程。您的方法的一个潜在(可能是次要)问题是,如果输入恰好包含文本$b$
,它将被错误地翻译为
。