我有一个正则表达式。它包含一个必需的命名捕获组和一些可选的命名捕获组。它捕获单个匹配项并将这些部分解析为我需要的命名组。
除了,现在我需要它重复。
本质上,我的正则表达式表示(可能)更长的字符串中的单个原子单元。目标字符串通常不会完全匹配我的正则表达式,而是包含重复的正则表达式实例,用点“。”分隔。特点。
例如,如果这是我的正则表达式捕获的内容:<some match>
实际的字符串可能如下所示:
<some match>
<some match>.<some other match>
<some match>.<some other match>.<yet another match>
修改原始正则表达式以解释重复模式同时忽略点的最简单方法是什么?
我不确定它是否真的需要,但这是我用来捕获单个段的正则表达式。同样,我想增强它以考虑可选的附加部分。我想让每个段在结果集中显示为另一个“匹配”;
^(?<member>[A-Za-z_][A-Za-z0-9_]*)(?:\[(?<index>[0-9]+)\])?(?:\[(?<index2>[0-9]+)\])?(?:\[(?<index3>[0-9]+)\])?$
它旨在解析类路径,最多具有三个可选的索引访问器。(即“ member.sub_member[0].sub_sub_member[0][1][2]
”)
我怀疑答案涉及向前看或向后看,对此我并不完全熟悉。
我目前使用 String.Split 来分隔字符串段。但我认为,如果对正则表达式的增强足够简单,我会跳过额外的拆分步骤,并重新使用正则表达式作为验证机制。
编辑:
作为齿轮中的附加扳手,我想禁止任何点“。” 字符串开头或结尾的字符。它们应该只作为路径段之间的分隔符存在。