C# 正则表达式匹配表达式中的偶数括号

发布于 2024-12-05 10:55:59 字数 677 浏览 1 评论 0原文

我有以下表达式:

KNOWN_TOKEN=((value operator value) operator value) 
            operator OTHER_KNOWN_TOKEN=value 
            operator KNOWN_TOKEN2=(value operator (value operator value));

我试图找到 ac# 正则表达式,以在打开时返回带有相等匹配的闭括号的整个表达式。这意味着,对于 KNOWN_TOKEN 我只需要 ((value operator value) operator value),对于 OTHER_KNOWN_TOKEN 我只需要 value code> 对于 KNOWN_TOKEN2 我需要 (值运算符(值运算符值))

我尝试了各种风格的 (\([^(]+\)) 但它们只匹配“最低”的“括号”组,此外,它们还匹配一个额外的组(即 KNOWN_TOKEN2 它们匹配一个额外的结束括号)。

另外,我在网上找到了一些关于将其分成几个重复步骤并更改原始文本的提示,但我宁愿将其放入一个正则表达式中。提示?

谢谢!

I have the following expressions:

KNOWN_TOKEN=((value operator value) operator value) 
            operator OTHER_KNOWN_TOKEN=value 
            operator KNOWN_TOKEN2=(value operator (value operator value));

I am trying to find a c# regular expression to return me the entire expression with equally matched closed parenthesis as they were opened. This means, for KNOWN_TOKEN I need only ((value operator value) operator value), for OTHER_KNOWN_TOKEN I need only value and for KNOWN_TOKEN2 I need (value operator (value operator value)).

I tried various flavours of (\([^(]+\)) but they only match the 'lowest' set of 'paranthesis' and in addition, they match an extra one (i.e. for KNOWN_TOKEN2 they match an extra ending parenthesis).

Also, I have found some hints on the web on doing it into several repeating steps and alter the original text, but I'd rather do it into one single regexp. Any hints?

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝海似她心 2024-12-12 10:55:59
Regex reg = new Regex(@"(?<token>[^=]*)=(?<value>\(*value.*)");
foreach (Match item in reg.Matches(""))
{
      var token= item.Groups["token"].Value.Trim();
      var val= item.Groups["value"].Value.Trim(';');
}

已编辑

Regex reg = new Regex(@"(?<token>[^=]*)=(?<value>\(*value.*)");
foreach (Match item in reg.Matches(""))
{
      var token= item.Groups["token"].Value.Trim();
      var val= item.Groups["value"].Value.Trim(';');
}

EDITED

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文