2012-01-26 18 views
1

ここに提案してください:C#正規表現

私は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]+[:]))" 

誰も良いideeaを持っていますか?

EDIT: "E1A"、 "E1B"、 "TA"が変化しています。 「:」

+0

"E1A"、 "E1B"、および "TA"定数はありますか?あるいは、これらの値は変わるのか、順不同に変化するのでしょうか?キャプチャしたいもののルールを明示的に定義していません。 – qJake

+0

"E1A"、 "E1B"、 "TA"が変化しています。同じことが変わらないのは、文字と数字の後に ":"が続きます。 – Gigg

+0

改行は一貫していますか?あなたはいつも "\ r \ n <文字列/数字のシーケンス>:<複数行にまたがる文字/数字のシーケンス>を持っていますか? – qJake

答えて

3
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); 

allMatchResults.CountsubjectStringにマッチの数が含まれています、とallMatchResults.Item[i]i番目の試合が含まれています、それは同じまま、すべてのは、彼らは文字で作られており、数字がで従うということです。

+0

それは働いています。それが何を意味するのか説明できますか?私は(?:...)が正規表現にマッチすることを知っているが、それはreturndではなく、残りの部分は?ありがとうございました – Gigg

+0

:)):))私が求めたもの。ありがとう – Gigg