我想在使用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更合适的东西?
答案 0 :(得分:1)
:[^:]+:
怎么样
1.匹配冒号
2.一次或多次跟随任何非冒号字符。
3.接着是冒号。
要获得匹配项,请使用MatchCollection matches = Regex.Matches(blah, ":[^:]+:");
代替Regex.Split
正则表达式简洁而强大,但我发现自己编写的注释与使用它时的代码一样多。
答案 1 :(得分:0)
你如何使用常规分割(在':'上),提取每一个元素,然后重新附加冒号?我认为你过于复杂了。
答案 2 :(得分:0)
试试这个正则表达式:
^(\w*):|:\w:|:\w$