none
關於正規化表示法, 分割字串的問題 RRS feed

  • 問題

  • 我的問題

    http://www.programmer-club.com/pc2020v5/forum/ShowSameTitleN.asp?URL=N&board_pc2020=csharp&index=5&id=10310&mode=&type_pc2020=sametitleLevel-2

    其他參考資料
    http://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

    以前有人給我過一小段的範例code, 用來分割字串用的

    Code Snippet

    using System.Text.RegularExpressions.Regex;
    如下:

         string strDataIn = "[@VAR1,NVarChar]=ABC;[@VAR2,Int]=123;[@VAR3,Float]=3.14159";
         Match m = Regex.Match(strDataIn, @"\[([\w@,]*)\]=([\w\.\d]*);{0,1}");
         while (m.Success) {
         Console.WriteLine("{0} = {1}", m.Groups[1], m.Groups[2]);
         m = m.NextMatch();
         }



    Regex.Match的第2個傳入值, 看不太懂'該怎麼寫', 才能從網頁裡抓出我要的字串
    有誰可以幫忙看
    該怎麼切字串嗎?

    --
    有點忘記以C#該怎麼寫 exe檔的AP了,
    近兩年來
    買書都集中在 ASP.NET相關的
    晚上再去書局敗家好了
    2008年8月29日 上午 02:13

解答

所有回覆

  • 給你參考一下我以前的小練習 C# 練習題 (11)

    2008年8月29日 上午 02:25
  • 照你的提示, 用 Expresso 這個工具實驗了一下

    Code Snippet

    @"<TR>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>"


    這樣可以正確拆出
    後面3格的字串

    但第5格td所包的是URL與書名
    這個不會拆
    實驗不出來

    如果針對第5格再用
    Code Snippet

    <a \b[^>]*>(.*?)</a>

    應該可以拆出書名
    但URL怎麼辦? 有能拆出URL的正規化語法嗎?


    ----
    可是寫C#時卻沒有過? 還是拆不出來?

    Code Snippet

    Match m = Regex.Match(strBody,
    @"<TR>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>
    <td \b[^>]*>(.*?)</td>");



    while (m.Success) //這邊會一直 false ?
    {
    }


    2008年8月29日 上午 03:18
  • 過於複雜的 HTML Code 建議是分段擷取

    參考:
    Example - URL Extractor
    2008年8月29日 上午 03:36