Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于嵌套括号的正则表达式 简明的_C#_Regex - Fatal编程技术网

C# 用于嵌套括号的正则表达式 简明的

C# 用于嵌套括号的正则表达式 简明的,c#,regex,C#,Regex,我有以下案文: [atdSd[ASDASDASY]***oopprefs[ewrdtr]pppp555b 我的匹配项应如下所示: [asdasdosy] [ewrdtr] 我的尝试 我曾尝试自己制作,但结果是: [atdSd[ASDASDASY] [ewrdtr] 我使用以下表达式: \[\S+<(\d+)REGEH(\d+)>\S+\] \[\S+\S+\] 细节 条件是: 比赛中不能有空格 在匹配中必须有[(ASCII符号)(ASCII符号)] 如果有嵌套括号,则需要匹配最

我有以下案文:

[atdSd[ASDASDASY]***oopprefs[ewrdtr]pppp555b

我的匹配项应如下所示:

  • [asdasdosy]
  • [ewrdtr]
  • 我的尝试 我曾尝试自己制作,但结果是:

  • [atdSd[ASDASDASY]
  • [ewrdtr]
  • 我使用以下表达式:

    \[\S+<(\d+)REGEH(\d+)>\S+\]
    
    \[\S+\S+\]
    
    细节 条件是:

    • 比赛中不能有空格
    • 在匹配中必须有[(ASCII符号)(ASCII符号)]
    • 如果有嵌套括号,则需要匹配最里面的括号。
      [asdSd[ASDASDUSD]
      应匹配
      [ASDASDUSD]
    不应产生匹配项的示例

    [atdSd[asdosy]***oopprefs[ewrdtr]PP555B

    问题: 如何匹配内括号?

    这个怎么样

    \[^\s\[]+[[^\s\[]+\]

    基本上将
    \S
    替换为
    [^\S\[]
    ,即非whitepsace字符的否定字符类匹配,关键是非
    [

    var st=“[atdSd[ASDASDASY]***oopprefs[ewrdtr]pppp555b”;
    列表结果=新列表
    (Regex.Matches(st,@“\[^[]+REGEH.*?\]”)
    .Cast()
    .选择(x=>x.Value)
    .ToList());
    //[asdasdosy][ewrdtr]
    
    非常感谢你的问题,如果这个答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明你已经找到了解决方案并给回答者和你自己带来了一些声誉。没有义务这么做。
      var st = "[atdSd[asdasd<4REGEH22>asdosy] ***oopprefs[ew<16REGEH30>rdtr]pppp555b";
    
            List<string> result = new List<string>
                                (Regex.Matches(st, @"\[[^[]+REGEH.*?\]")
                                .Cast<Match>()
                                .Select(x => x.Value)
                                .ToList());
    
            // [asdasd<4REGEH22>asdosy] [ew<16REGEH30>rdtr]