c# - 正则表达式从字符串中删除特定标签及其内容

标签 c# regex

我有一个给定的字符串:

"Hi there <ss type="laugh">:)</ss>"

当我使用

Regex.Replace(s, @"<(.|\n)*?>", string.Empty);

它返回我

"Hi there :)"

我如何修改表达式以删除所有“ss”标签和它们之间的所有内容?

最佳答案

该字符串包含一个常规的 XML 标记,因此您可以使用 XElement

此代码将只保留外部元素的文本(标签外的文本):

var s = "Hi there <ss type=\"laugh\">:)</ss>";
var el = XElement.Parse(string.Format("<root1>{0}</root1>", s));
var result = string.Concat(el.Nodes().OfType<XText>().Select(t => t.Value)).Trim();

enter image description here

只需确保使用 System.Xml.Linq 命名空间即可。

如果您有其他 XML 标签并且您只想删除 ss 标签:

var s = "<b>Hi</b> there <ss type=\"laugh\">:)</ss>";
var el = XElement.Parse(string.Format("<root1>{0}</root1>", s));
el.Descendants("ss").Remove();
var reader = el.CreateReader();
reader.MoveToContent();
var result2 = reader.ReadInnerXml().Trim();

结果:enter image description here

关于c# - 正则表达式从字符串中删除特定标签及其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312421/

相关文章:

c# - 带变量的公式的数据库存储

c# - 从 Windows 文件资源管理器拖放到 Windows 窗体上不起作用

c# - 为什么要对 QueueBackgroundWorkItem 使用异步?

c# - 依赖于 HttpContext 的单元测试

javascript - SignalR 身份验证 - 处理未授权的情况

c# - 正则表达式问题(在asp.net MVC5中)

regex - VBscript:如何在引号('s)之外的字符串中将文本的特定部分大写

java - Eclipse 表示此正则表达式中存在非法重复

javascript - 如何从字符串数组中以任意顺序匹配并突出显示所有术语?

regex - 正则表达式以匹配SSH url部分