正则表达式无法匹配内部可重复出现的事件
我无法多次匹配嵌套捕获组,结果只给了我最后一次内部捕获。
输入字符串: =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( 0B
, E2
, C2
, A3
)的所有捕获:
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);