C#正则表达式从输入中提取组

时间:2011-10-01 03:36:02

标签: c# regex

我想在使用C#的任意输入中提取两个冒号(包括冒号)之间的任何内容。鉴于

String input = "a:one:b:two:c:three:d";

我想要

{string[3]}
[0]: ":one:"
[1]: ":two:"
[2]: ":three:"

使用

String[ ] inverse = Regex.Split( input, ":.*?:" );

我得到了与我想要的相反的东西......

{string[4]}
[0]: "a"
[1]: "b"
[2]: "c"
[3]: "d"

在这种情况下,如何反转这个或者是否有比Regex.Split更合适的东西?

3 个答案:

答案 0 :(得分:1)

:[^:]+:怎么样 1.匹配冒号 2.一次或多次跟随任何非冒号字符。 3.接着是冒号。

要获得匹配项,请使用MatchCollection matches = Regex.Matches(blah, ":[^:]+:");代替Regex.Split

正则表达式简洁而强大,但我发现自己编写的注释与使用它时的代码一样多。

答案 1 :(得分:0)

你如何使用常规分割(在':'上),提取每一个元素,然后重新附加冒号?我认为你过于复杂了。

答案 2 :(得分:0)

试试这个正则表达式:

^(\w*):|:\w:|:\w$