Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重复模式的C#正则表达式_C#_Regex - Fatal编程技术网

重复模式的C#正则表达式

重复模式的C#正则表达式,c#,regex,C#,Regex,我需要创建一个复杂的正则表达式,它将匹配字符串中不同数量的重复模式 要匹配的字符串示例如下 1\(E_123456)\(E_34567)\(E_424324234)\(E_8908908)\(E_23132312)\M_133123 我添加了括号以突出显示需要匹配的重复模式。这些不会出现在真正的字符串中 顺序很重要,因为它描述了特定的层次结构。这就是我想要提取和构建的层次结构。模式的深度(或重复模式的数量)根本不是恒定的,所以这不是x个组的简单情况 即。。上面的深度为5 欧盟123456、欧

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

要匹配的字符串示例如下

1\(E_123456)\(E_34567)\(E_424324234)\(E_8908908)\(E_23132312)\M_133123 
我添加了括号以突出显示需要匹配的重复模式。这些不会出现在真正的字符串中

顺序很重要,因为它描述了特定的层次结构。这就是我想要提取和构建的层次结构。模式的深度(或重复模式的数量)根本不是恒定的,所以这不是x个组的简单情况

即。。上面的深度为5

欧盟123456、欧盟34567、欧盟424324234、欧盟8908908、欧盟23132312

1\(E_1)\(E_11111)\(E_354534534)\M_133123 
深度为三。(E_1,E_111111,E_354534534)

然而,我需要一个正则表达式,它将输出一个有序列表,这些值的显示顺序与深度无关


我对基本的正则表达式没问题,但它们不是我的强项,所以我非常感谢有人的帮助

使用此正则表达式
(\\E\ud+)
按stlit提取计数
\
或使用正则表达式组

原始字符串上是否存在“\”?如果是,您可以用“\”分割字符串。str.Split(新[]{'\'},StringSplitOptions.RemoveEmptyEntries);
Regex.Matches
方法和
MatchCollection
类已被设计为从字符串中查找多个匹配项。@devundef well,我的主。。。有时最好的解决方案是最简单的。。恐怕是一个简单的过度思考的例子。从学术角度来看,如果不是为了权宜之计,看到一个解决方案会很有趣;我会采取务实的态度!谢谢如果你去掉最后一个“+”符号,你可以
Regex.Matches
它,并有一个每个E_uu序列的有序列表。@nicholas,它必须是链式的,简单地说
E_u序列
不是链式的。这做得很完美。朴素典雅。非常感谢。
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);
}