我正在尝试将<stuff>{<more stuff>}
之类的字符串解析为两个组<stuff>
和<more stuff>
。
我的正则表达式很简单:
@"^((?>[^\{]*))(\{.*\})?$"
一些在线正则表达式解析器显示它有效,但它在.net
中不起作用。我最终得到的第二组具有相同的匹配,或者第一组也匹配括号{}
例如,
test{case}
给出:
test{case}
和{case}
或
test{case}
和test{case}
。
(取决于正则表达式的一些轻微修改)
我做错了什么?
另外:如何将此扩展为CSV情况(上面将是一个元素),并带有可选的最后一个逗号。
答案 0 :(得分:0)
你的正则表达式是正确的,但我怀疑你遇到了这些小组的问题。
尝试命名组(使用语法(?<name>...)
)(您还在第一组上进行了原子捕获,我认为您不需要这样做):
@"^(?<stuff>[^\{]*)(?<moreStuff>\{.*\})?$"
现在您可以通过以下方式访问结果:
var match = regex.Match(input);
if (match.Success)
{
var stuff = match.Groups["stuff"];
var moreStuff = match.Groups["moreStuff"];
}