正则表达式无法匹配内部可重复出现的事件

我无法多次匹配嵌套捕获组,结果只给了我最后一次内部捕获。

输入字符串: =F2=0B=E2some text =C2=A3
正则表达式: (\=([0-9A-F][0-9A-F]))+

它返回的捕获组是:

第1组:

  • =F2=0B=E2
  • =C2=A3

第2组:

  • E2
  • A3

但我需要第2组返回:

  • F2
  • 0B
  • E2

  • C2
  • A3

在每个外部群体内。

这有可能吗?

你只需要访问match.Groups[2].Captures集合。

请参阅正则表达式演示

在此处输入图像描述

你需要的是一个CaptureCollection 。 请参阅此Regex.Match参考 :

Captures
获取捕获组匹配的所有捕获的集合,以最RegexOptions.RightToLeft第一顺序(如果正则表达式使用RegexOptions.RightToLeft选项修改, RegexOptions.RightToLeft最里面 – 最右边 – 第一顺序)。 该集合可能包含零个或多个项目。(inheritance自Group。)

这是一个示例演示 ,它输出来自Groups[2] CaptureCollection( 0BE2C2A3 )的所有捕获:

 var pattern = "(=([0-9A-F]{2}))+"; var result = Regex.Matches("=F2=0B=E2some text =C2=A3", pattern) .Cast().Select(p => p.Groups[2].Captures) .ToList(); foreach (var coll in result) foreach (var v in coll) Console.WriteLine(v);