2012-07-13 187 views
0

是新來的正則表達式,所以我有一個很難編譯我自己的模式。構建正則表達式

基本上是從讀我的Android手機logcat的,我試圖打破這種字符串成片能在TextView中

顯示它這是實際的字符串我試圖令牌。

很能 「十二月7日至6日:18:45.790:W/dalvikvm(571)::TaintLog OSNetworkSystem.write(91.121.171.39)與標籤0x400的數據= [POST/HTTP/1.1接收到的數據」檢索使用掃描儀方法「標記」後的數字,但現在我需要從OSnetworkSystem.Write(xxx.xxx.xxx.xxx)提取IP地址

任何人都可以提供一些關於使用什麼的提示能夠額外獲得IP地址。

回答

1

那麼,對於正則表達式的一部分,我可以幫上。

正則表達式:

([0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}) 

願意給定的字符串匹配中的任何IP地址。

正規表達式我做了一個網站,http://rubular.com/已真正與我的工作流程幫助。我可以投入任意數量的「測試用例」並開始編寫正則表達式代碼。


按照下面的註釋進行編輯。

而不是重新發明輪子。我發現在IPv4上的正則表達式一個偉大的寫了起來: How do I write a regular expression that matches an IPv4 dotted address?

這基本上說:

/^0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])$/ 

這是長期和複雜的。但是在寫完之後,應該讓你對它的實際操作有一個很好的理解。

以我的經驗,更復雜的& relient我們用正則表達式的成功率得到的,就越是會可能會失敗。我建議永遠不要依靠正則表達式關鍵數據 ...找到另一種方式,總是有:)

+2

這裏有一個正則表達式cheatsheet的鏈接,以建立其他正則表達式的額外幫助:http://www.cheatography .com/davechild/cheat-sheets/regular-expressions/ – ardent 2012-07-13 16:40:51

+0

允許IP地址的值超過255嗎?如果沒有,你需要一個更復雜的正則表達式來處理它。 – BlackVegetable 2012-07-13 16:59:22

+0

同意BlackVegetable。你可以得到更多的深入。我應該加一點提醒。永遠不要依靠RegEx來防止欺騙。 RegEx幾乎總是會收集錯誤的東西。 @ardentsonata:優秀的小抄!最喜歡那一個。 – CrazyVipa 2012-07-13 17:14:05