gpt4 book ai didi

c# - 逗号正在破坏分组

转载 作者:行者123 更新时间:2023-12-04 10:19:11 25 4
gpt4 key购买 nike

我想要一个匹配任何东西的正则表达式作为这个字符串的参数 concat(1st,2nd)并提取三个匹配组如下:

第一组 : 连接

Group2 : 第一

第3组 : 第二。

我试过这个:^\s*(concat)\(\s*(.*?)\s*\,\s*(.*)\)\s*$ ,它工作正常,直到我有一个带逗号的参数,如下所示:
concat(regex(3,4),regex(3,4)) .它接缝逗号正在分解它,如何忽略参数内容并将其作为一个单独的组?

最佳答案

您可以使用

^\s*(concat)\(\s*((?>\w*\((?>[^()]+|(?<o>)\(|(?<-o>)\))*(?(o)(?!))\)|\w+))\s*,\s*((?>\w*\((?>[^()]+|(?<o>)\(|(?<-o>)\))*(?(o)(?!))\)|\w+))\)\s*$

regex demo .

详情
  • ^ - 字符串开头
  • \s* - 0+ 个空格
  • (concat) - 第 1 组:concat
  • \( - 一个 (字符
  • \s* - 0+ 个空格
  • ({arg}) - 第 2 组:arg图案:
  • \w* - 0+字字符
  • \((?>[^()]+|(?<o>)\(|(?<-o>)\))*(?(o)(?!))\) - ( ,然后是除 ( 之外的任意数量的嵌套括号或字符和 )然后 )
  • |\w+ - 或仅 1 个以上的字符字符
  • \s*,\s* - 用 0+ 个空格括起来的逗号
  • ({arg}) - 第 3 组:arg图案
  • \) - 一个 )字符
  • \s* - 0+ 个空格
  • $ - 字符串的结尾。

  • C# demo :
    var arg = @"(?>\w*\((?>[^()]+|(?<o>)\(|(?<-o>)\))*(?(o)(?!))\)|\w+)";
    var pattern = $@"^\s*(concat)\(\s*({arg})\s*,\s*({arg})\)\s*$";
    var match = Regex.Match("concat(regex(3,4),regex(3,4))", pattern);
    if (match.Success)
    {
    Console.WriteLine(match.Groups[1].Value);
    Console.WriteLine(match.Groups[2].Value);
    Console.WriteLine(match.Groups[3].Value);
    }
    // => concat regex(3,4) regex(3,4)

    结果:

    enter image description here

    关于c# - 逗号正在破坏分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60948226/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com