2014-02-16 68 views
0

是否有正則表達式,它會讀取和返回在本文中適當格式的IP地址?請注意它是向後的,所以正則表達式必須向後遍歷代碼,然後替換'|'與'。'正則表達式攜帶看看後面的IP地址

它已經快把我逼瘋了......我會很感激你的幫助;)

摘自代碼:

4.3/d/C/BA 「10:」 0 ://8.7/1/1.f」,Z: 「0://8.7/1/yx」,W: 「0://6.5.4.3/i/v/ut」,S: 「R」,問:p,O:N,9:\ '0 \',M:[{2: 「L」,K: 「0://8.7/1/1.f」},{2: 「J」, H:{E:\ '0://6.5.4.3/d/c/ba \',\ '9 \':\ '0 \'}},{2: 「克」}]});」, 36,40'| type | 187 | 20 | 207 | 31 | com | hystorystingbulk |

所需的返回:

31.207.20.187

謝謝!

編輯:我的點點滴滴,但我不能把它放在一起,讓我想要的結果

| - 積極的回顧後

\(< =/^?) b \ d {1,3}。\ d {1,3}。\ d {1,3}。\ d {1,3} \ b - 這會爲您帶來 中的ip給定文件/文本

\ b \ d {1,3} \ | \ d {1,3} \ | \ d {1,3} \ | \ d {1,3} \ b - 這將返回ip(但是 後退,記得我想翻頁),並用'|'分開而不是'。'的 。

有人問....我使用Python和使用http://www.regexplanet.com/advanced/python/index.html THX

+0

你能發表你已經試過的代碼嗎?這不是一個'我們會寫你的代碼免費'網站。 – Carpetsmoker

+0

此外,指定使用哪種正則表達式引擎(或至少使用哪種語言)可能是一個好主意。例如,PCRE和POXIX擴展正則表達式之間存在很多差異。 – jpaugh

+0

沒有什麼*簡單*關於正則表達式,這是肯定的:爲什麼不下載python並在本地使用它?或者找一個在線的全面口譯員?爲什麼你必須特別使用這個網站? – jpaugh

回答

1

也許最好的方式是單獨存儲的每個號碼爲一組測試,然後格式化後來加入的團體在一起。

一些這樣的:

/(\d+)\|(\d+)\|(\d+)|(\d+)/

這就產生了5個不同的匹配組,每個組的父母()和一個圍繞着整場比賽。但這不是Perl!現在,在Python中,將有更喜歡

match("(\\d+)\\|(\\d+)\\|(\\d+)|(\\d+)", ..)

然後,使用group搶出單獨的比賽,並把它們放在一起以正確的順序:

group(...) "." group(...) "." group(...) "." group(...)

田田!

聲明:這不是真正的Pythonic語法,但應該給你一個想法。

+0

謝謝,但這不是一個選項我有:( – user2957951

+0

我不認爲真的有另一種選擇。你在用什麼?'sed' ?? – jpaugh

+0

它肯定可能在Python中,有匹配和組。 – jpaugh

0
import re 
expression = re.compile("(\d{1,3})\|(\d{1,3})\|(\d{1,3})\|(\d{1,3})") 
text = """4.3/d/c/b.a",10:"0://8.7/1/1.f",z:"0://8.7/1/y.x",w:"0://6.5.4.3/i/v/u.t",s:"r",q:p,o:n,9:\'0\',m:[{2:"l",k:"0://8.7/1/1.f"},{2:"j",h:{e:\'0://6.5.4.3/d/c/b.a\',\'9\':\'0\'}},{2:"g"}]});',36,40,'|type|187|20|207|31|com|hystorystingbulk|""" 

matches = expression.findall(text) 

IPs = ['.'.join(reversed(match)) for match in matches] 

>>> print(IPs) 
['31.207.20.187']