C#正则表达式

C#正则表达式,c#,asp.net,.net,regex,C#,Asp.net,.net,Regex,请在此提出建议: 我试着用C#做一个正则表达式。这是文本 E1A: pop(+) call T call E1 E1B: return TA: call F call T1 我想这样分割它: 1) E1A: pop(+) call T call E1 2) E1B: return 3) TA: call F call T1 我看了看“向后看”,但由于天气原因,它不起作用+ 以下是我希望实现的目标,但它无法实现: "[A-Z0-9]+[:].+(?=([A-Z0-9]+[:]))" 有人

请在此提出建议:

我试着用C#做一个正则表达式。这是文本

E1A: pop(+)
call T
call E1
E1B: return
TA: call F
call T1
我想这样分割它:

1)
E1A: pop(+)
call T
call E1

2)
E1B: return

3)
TA: call F
call T1
我看了看“向后看”,但由于天气原因,它不起作用+

以下是我希望实现的目标,但它无法实现:

"[A-Z0-9]+[:].+(?=([A-Z0-9]+[:]))"
有人有更好的想法吗

编辑:“E1A”、“E1B”、“TA”正在更改。它们都是由字母和数字组成的,后面跟着“:”


现在
allMatchResults.Count
将包含
subjectString
allMatchResults中的匹配数。项[i]
将包含
i
第次匹配。

是“E1A”、“E1B”和“TA”常量吗?或者这些值会发生变化,或者它们会无序移动?您尚未明确定义要捕获的内容的规则。“E1A”、“E1B”、“TA”正在更改。它们都是由字母和数字组成的,后面跟着“:”换行符一致吗?您会一直使用“\r\n:”?在原文中,我有换行符。但我想如果我把它们拿出来会更容易些。这就是为什么会有“.+”(在生成正则表达式之前,我将它们替换为“”)。但是如果您有一个包含的解决方案,\r\n则greatI可以使换行符出现在每个语句之前,并使用冒号,但您不能在正则表达式中进行递增计数器。你想让它计数,还是仅仅插入换行符?它正在工作。你能解释一下这是什么意思吗?我的意思是我知道(?:…)匹配正则表达式,但它不是返回的,而是其余的?非常感谢:)正是我想要的。谢谢
Regex regexObj = new Regex(
    @"^               # Start of line
    [A-Z0-9]+:        # Match identifier
    (?:               # Match...
     (?!^[A-Z0-9]+:)  #  (unless it's the start of the next identifier)
     .                #  ... any character,
    )*                #  repeat as needed.", 
    RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
allMatchResults = regexObj.Matches(subjectString);