C#Regex Expression用于重复模式

时间:2012-07-13 11:35:35

标签: c# regex

我需要制作一个复杂的正则表达式,它将匹配字符串中不同数量的重复模式。

要匹配的字符串示例如下

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)

但是我需要一个正则表达式,它将按顺序输出有序列表,无论深度如何都会显示这些值...

我对基本的正则表达式表达不错,但他们不是我的强项,所以对某人的帮助将非常感激!

2 个答案:

答案 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);
}