正規表示式(Regular Expression)每個程式設計師都必需要有的能力
- 2009-03-15
- 32030
- 0
今天在藍色小舖看到有人問了這個問題,一長串很髒的資料要抽出需要的部份,解法很多種但是寫法都很不直覺,所以demo就利用正規表示式(Regular Expression)來處理了這個問題,以下就是解法〔這分類還真難分,因為他存在於各種語言中,把他分類為ASP.NET是因為,其他的語法是ASP.NET的,哈~〕
正規表示式(Regular Expression)是一種對於文字處理有強大能力的技術?語言?功能? 很抱歉我不知道他屬於什麼...它的出現很早存在也很廣(各種語言幾乎都可以用),因為他真的太強大而且多變化所以demo非常推薦學習,但是因為它的語法難記憶所以也是很多程式設計人員學了就忘,甚至碰也不想碰得原因,但是相信我,學好這玩意,對於你的資料處理部份可以等於多了一把絕世神兵。
小舖的原始問題在這〔字串處理的方法〕看到了那麼髒的字串我第一個想到的就只有正規表示式(Regular Expression),因為我們稍微看一下就可以知道樓主想要的資訊是有一定規則的,所以這時候正規表示式(Regular Expression)就是最好的選擇,以下就是code啦
string a = "\"帥哥\",\"TXT\",03/12/2009,13:22:19,4,\"111\",192.192.192.192,"; string reg = "^\"(?<chinese>.[^a-z]).+(?<time>\\d{2}:\\d{2}:\\d{2}).+?(?<ip>\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"; string[] strArray = a.Split(','); foreach (Match item in Regex.Matches(a, reg)) { Response.Write("這是中文:" + item.Groups["chinese"].Value + "<br/>"); Response.Write("這是時間:" + item.Groups["time"].Value + "<br/>"); Response.Write("這是IP:" + item.Groups["ip"].Value + "<br/>"); }
上面的規則我寫的很寬鬆,不過能解決問題就好,有進階需要的時候再加強即可。
這樣子頁面就會正確的印出我們所需的中文、時間格式、IP位置了,看起來是不是還不錯用阿,有心學習的demo提供幾個網路資源給你吧。
- http://blog.roodo.com/rocksaying/archives/2670695.html
- http://www.regexlab.com/zh/deelx/syntax.htm
- http://phone.idv.tw/cs2/forums/thread/424.aspx
- http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/06/30/introduction-to-net-regular-expression.aspx
- 測試工具如下 Expresso Regular Expression Development Tool(如果你是寫c#他可以幫你直接產生code唷)
- http://fishcodelib.com/Convert.htm(demo比較常使用這個)
回應討論