2

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

要匹配的字符串示例如下

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 

深度为三。(E_1、E_111111、E_354534534)

但是,我需要一个正则表达式,它将按照这些值的呈现顺序输出一个有序列表,而不管深度如何......

我对基本的正则表达式没问题,但它们不是我的强项,因此将不胜感激有人的帮助!

4

2 回答 2

1

(\\E_\d+)+通过 stlit使用此正则表达式提取计数\或使用正则表达式组

于 2012-07-13T11:41:41.297 回答
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);
}
于 2012-07-13T12:25:29.360 回答