我有以下正则表达式:
@"{thing:(?:((\w)\2*)([^}]*?))+}"
我正在使用它来查找字符串中的匹配项:
MatchCollection matches = regex.Matches(string);
IEnumerable formatTokens = matches[0].Groups[3].Captures
.OfType<Capture>()
.Where(i => i.Length > 0)
.Select(i => i.Value)
.Concat(matches[0].Groups[1].Captures.OfType<Capture>().Select(i => i.Value));
这曾经产生我想要的结果;然而,我的目标从此改变了。这是现在所需的行为:
假设输入的字符串是'stuff/{thing:aa/bb/cccc}{thing:cccc}'
我希望formatTokens 是:
formatTokens[0] == "aa/bb/cccc"
formatTokens[1] == "cccc"
现在,这就是我得到的:
formatTokens[0] == "/"
formatTokens[1] == "/"
formatTokens[2] == "cccc"
formatTokens[3] == "bb"
formatTokens[4] == "aa"
请特别注意,即使输入了两次,“cccc”也不会出现两次。
我认为问题是 1) 正则表达式中的重新捕获和 2) concat 配置(这是我想要将所有东西分开的时候),但到目前为止我还没有找到能够产生我想要的组合。有人可以阐明正确的正则表达式/concat 组合以产生上述所需的结果吗?
哈士奇WWW
繁花如伊
相关分类