none
請教一正規表示式 RRS feed

  • 問題

  • 小弟有一正規表示式的應用,想了好久就是不知該如何處理,不知是否有大大可以指點迷津....

     

    Q : 如果我要剖析HTML語法,找出HTML註解的區段,則正規表示式應如何表示呢?

    Code Snippet

    <!--

    這是第一段註解

    -->

    xxxxxxxxxxxxx

    <!--

    這是第二段註解

    -->

    xxxxxxxxxxxxxxx

     

     

    如果只是這樣寫...    <!--.*-->    那2段註解會變成同一組解答,不正確。

    也就是說,我要在內容中排除   -->   ,但是 [^a-z] 這樣用法是針對所列出的個別字元做排除,

    而我真正卻只要排除字串    -->    而已呀~~~

    小弟應該怎麼做呢?

    大大們教教我呀~~~

     

     

     

    2008年1月28日 上午 08:15

解答

  • private void button1_Click(object sender, EventArgs e)
    {
        string htmlComment = @"<!-- comment1 --> test 
     
             jwhfjkwehkjfhwne 
     
               wqwqwq
         <!-- comment2 -->";
     
     
        Regex r = new Regex(@"<!--(.*?)-->");
        Match m;
     
        for (m = r.Match(htmlComment); m.Success; m = m.NextMatch())
        {
            MessageBox.Show(m.Groups[1].ToString());
        }
    }


    output: 
    (1) comment1
    (2)
    comment2

    2008年1月28日 上午 08:58

所有回覆

  • private void button1_Click(object sender, EventArgs e)
    {
        string htmlComment = @"<!-- comment1 --> test 
     
             jwhfjkwehkjfhwne 
     
               wqwqwq
         <!-- comment2 -->";
     
     
        Regex r = new Regex(@"<!--(.*?)-->");
        Match m;
     
        for (m = r.Match(htmlComment); m.Success; m = m.NextMatch())
        {
            MessageBox.Show(m.Groups[1].ToString());
        }
    }


    output: 
    (1) comment1
    (2)
    comment2

    2008年1月28日 上午 08:58
  • 原來重點是數量詞,小弟受教了

     

    2008年1月28日 上午 09:04
  • 因為 Regex 都是 greedy 的... 所以要加上 ? 來限定不貪多的比對...

    PS. 如果你不太會寫剖析 ASP.NET 語法...可以參考 System.Web.RegularExpressions



    2008年1月28日 下午 02:45