我想使用 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 更合适的东西?
最佳答案
怎么样 :[^:]+:
1.匹配冒号
2. 后跟任何非冒号字符一次或多次。
3. 后跟一个冒号。
要获取匹配集,请使用 MatchCollection matches = Regex.Matches(blah, ":[^:]+:");
而不是 Regex.Split
正则表达式简洁而强大,但我发现自己在使用它们时编写的注释与编码时一样多。
关于C# 正则表达式从输入中提取组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7617982/