C# .NET 正则表达式匹配太多
本文关键字:太多 正则表达式 NET | 更新日期: 2023-09-27 18:34:40
我正在尝试将像<stuff>{<more stuff>}
这样的字符串解析为两组<stuff>
和<more stuff>
。
我的正则表达式很简单:
@"^((?>[^'{]*))('{.*'})?$"
一些在线正则表达式解析器显示它可以工作,但在.net
中不起作用。要么我最终得到第二组具有相同的匹配项,要么第一组也匹配括号{}
例如,
test{case}
给出:
test{case}
和{case}
或
test{case}
和test{case}
.
(取决于正则表达式的一些轻微修改(
我做错了什么?
另外:如何使用可选的最后一个逗号将其扩展到CSV情况(以上将针对一个元素(。
您的正则表达式是正确的,但我怀疑您在使用这些组时遇到了问题。
尝试命名组(使用语法(?<name>...)
((您在第一组上也有原子捕获,我认为您在这里不需要(:
@"^(?<stuff>[^'{]*)(?<moreStuff>'{.*'})?$"
现在,您可以通过以下方式访问结果:
var match = regex.Match(input);
if (match.Success)
{
var stuff = match.Groups["stuff"];
var moreStuff = match.Groups["moreStuff"];
}