从字符串中删除特定的非html标记

时间:2012-12-20 09:38:53

标签: c# regex string

我想知道如何使用C#和RegEx轻松地从字符串中删除特定值。我有以下HTML字符串:

Add [tt]PEELED PLUM SHAPED TOMATOES in tomato juice[/tt][rg]WHOLE PEELED TOMATOES[/rg][rp]WHOLE   PEELED TOMATOES in JUICE[/rp], basil, oregano, parsley, salt, black pepper, sugar, [tt]TOMATO SAUCE[/tt][rg]TOMATO SAUCE[/rg][rp]TOMATO SAUCE[/rp], [brand][rg]TOMATO PASTE[/rg][rp]TOMATO PASTE[/rp]

我需要一些方法来过滤掉,例如这部分:

[tt]PEELED PLUM SHAPED TOMATOES in tomato juice[/tt]

因此应删除[tt]标签以及介于两者之间的文本。如果[tt]标签在源字符串中多次出现,也应该将其删除。

这可以通过使用RegEx来实现吗?

谢谢, 丹尼尔

1 个答案:

答案 0 :(得分:1)

是。只要[tt]标签永远不会嵌套,就很容易:

result = Regex.Replace(subject, @"\[tt\].*?\[/tt\]", "", RegexOptions.Singleline);

如果您确实需要嵌套的[tt]标记,那么您需要重复应用以下命令,每个嵌套级别一次:

result = Regex.Replace(subject, @"\[tt\](?:(?!\[/?tt\]).)*\[/tt\]", "", RegexOptions.Singleline);