我需要制作一个复杂的正则表达式,它将匹配字符串中不同数量的重复模式。
要匹配的字符串示例如下
1\(E_123456)\(E_34567)\(E_424324234)\(E_8908908)\(E_23132312)\M_133123
我添加了括号以突出显示我需要匹配的重复模式。这些不会出现在真正的字符串中。
订单很重要,因为它描述了某个层次结构。我想要提取和构建这个层次结构。模式的深度(或重复模式的数量)根本不会是恒定的,因此它不是x个组的简单情况!
即..以上的深度为5
E_123456,E_34567,E_424324234,E_8908908,E_23132312
而
1\(E_1)\(E_11111)\(E_354534534)\M_133123
的深度为3。 (E_1,E_111111,E_354534534)
但是我需要一个正则表达式,它将按顺序输出有序列表,无论深度如何都会显示这些值...
我对基本的正则表达式表达不错,但他们不是我的强项,所以对某人的帮助将非常感激!
答案 0 :(得分:1)
使用此正则表达式(\\E_\d+)+
按stlit \
提取计数或使用正则表达式组
答案 1 :(得分:0)
var str = @"\E_1\E_11111\E_354534534\M_133123";
var reg = new Regex(@"(\\\w+_\d+)");
foreach (var match in reg.Matches(str))
{
Console.WriteLine(match);
}