regex.replace()中的C#多重模式

时间:2010-07-31 09:45:03

标签: c# .net regex

如何将多个模式传递给regex.replace()模式参数?

在PHP中,您只需放弃包含它们的数组。 C#中是否有某种相同的选项?

我正在遍历一些用户名,其中一些用户名被html标签包围。 html标签并不完全相同。但我确实知道他们是哪一个。

因此,如果我可以在regex.replace()模式参数中传递多个模式来查找,那就太好了。或者我必须为每个html标记创建一个单独的模式并运行regex.replace()函数。

希望我清楚我要完成的事情!

提前致谢!

[编辑] @Alan Moore,

底线,从字符串中删除所有html标签,正是我想要做的。

[/编辑]

4 个答案:

答案 0 :(得分:7)

// I’m assuming you have a regex for each thing you want to replace
List<string> multiplePatterns = [...];

string result = Regex.Replace(input, string.Join("|", multiplePatterns), "");

答案 1 :(得分:5)

使用regexp divider |,例如:

</?html>|</?head>|</?div>

答案 2 :(得分:2)

所以你有一个字符串列表,每个字符串都完全由一个用户名组成,可选择包含在HTML标签中?它们属于哪个标签无关紧要;只需删除看起来的任何内容,如标记:

name = Regex.Replace(name, @"</?\w+[^<>]*>", String.Empty);

答案 3 :(得分:1)

如果表现很重要并且没有'&lt;'的风险或'&gt;'在用户名中,这可以工作:

string RemoveTags(string s)
        {
            int startIndex = s.IndexOf('<');
            int endIndex = s.IndexOf('>');
            return startIndex >= 0 && endIndex >= 0 ? RemoveTags(s.Remove(startIndex, endIndex - startIndex + 1)) : s;
        }