0

次のような内容のテキスト ファイルがあります。

+++++ jcguox 4/2/2011 6:19:47 AM

text here

+++++ viveksix 8/24/2012 4:09:17 AM

text again

+++++ viveksix 8/25/2012 11:01:30 AM

----- Vivek Singh 08/25/2012 11:28:12 PM

adding text

+++++ viveksix 8/25/2012 11:02:52 AM

adding more

+++++name date timetype inのすべてのパターンを選択したいのですarraylistが、次の条件があります。

  • -----name date time appears直後の場合+++++name date time、これ+++++name date timeは に追加されるべきではありませんarraylist
  • その後にテキストが表示される場合にのみ+++++name date time、これ+++++name date timeを に追加する必要がありますarraylist

+++++name date time現在、パターンと-----name date time使用の両方を解析できRegex.matchesます。

質問は、次のようなループで適用する方法です。

foreach(Match m in Regex.Matches(textfile,@"+++++name date time" + @"-----name date time")
{
    if(after +++++name date time text is there)
        arraylist.Add("+++++name date time");
    else if(after +++++name date time -----name date time is there)
        //do not add in arraylist;
}



output for above case is : 

+++++ jcguox 4/2/2011 6:19:47 AM
+++++ viveksix 8/24/2012 4:09:17 AM
+++++ viveksix 8/25/2012 11:02:52 AM
4

2 に答える 2

0

これをチェックしてください...

Regex.Match(subjectString, @"\++ (?<author>\w+) (?<date>\d{1,2}/\d{1,2}/\d{4}) (?<time>\d{1,2}:\d{1,2}:\d{1,2} (?:AM|PM))(?!\r\n\r\n-+)")
于 2012-08-26T07:44:36.487 に答える
0

これを試して:

string input = @" i have a text file with content something like this:

     +++++ jcguox 4/2/2011 6:19:47 AM

    text here

    +++++ viveksix 8/24/2012 4:09:17 AM

    text again


    +++++ viveksix 8/25/2012 11:01:30 AM

    ----- Vivek Singh 08/25/2012 11:28:12 PM

    adding text


    +++++ viveksix 8/25/2012 11:02:52 AM

    adding more";

        ArrayList al = new ArrayList();

        MatchCollection mc = Regex.Matches(input, @"\++ (?<author>\w+) (?<date>\d{1,2}/\d{1,2}/\d{4}) (?<time>\d{1,2}:\d{1,2}:\d{1,2} (?:AM|PM))(?!\r\n\r\n-+)");
        foreach (Match m in mc)
        {
            string st = m.NextMatch().ToString();
            if (Regex.Match(st, @"\++ (?<author>\w+) (?<date>\d{1,2}/\d{1,2}/\d{4}) (?<time>\d{1,2}:\d{1,2}:\d{1,2} (?:AM|PM))(?!\r\n\r\n-+)").Length > 0)
            {
                al.Add(st);
            }

        }
于 2012-08-26T08:29:12.117 に答える