2013-10-12 77 views
1

我想從每行中提取IPV4地址。可能有有效或無效的IP地址,我想打印所有。正則表達式從行中提取ip地址

例如

Failed service from 212.345.23.234 
Successfully logged in at 13:09:89 from 12.34.76.54 
Ping from 123.567.42.56 
..... 
..... 

Output: 
212.345.23.234 
12.34.76.54 
123.567.42.56 
..... 

我需要一個正則表達式,我可以像currentLine.contains(PATTERN)那樣直接運行每行。我不想將字符串標記爲標記,並針對每個標記運行RE。

+1

請看看這個。 http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address – AshwinKumarS

+0

[你有什麼試過?](http://www.whathaveyoutried.com/)我意思*除了*問我們。 –

回答

0

匹配的IP ...我不得不推出自己的。它似乎適用於所有IP範圍,雖然很麻煩。讓我知道如果失敗對於任何情況下,我需要更新我自己:

\b(?:(?:2[0-5][0-5]|1[0-9][0-9]|1[0-9]|[1-9]{1,2})\.){3}(?:2[0-5][0-5]|1[0-9][0-9]|1[0-9]|[1-9]{1,2})\b 

這並不提取什麼,只是相匹配。它取決於你做你需要的東西。

1

This SO問題應該指出你如何做主機名或IPV4地址匹配的方式。對於IPV6,請看SO上的this問題。

0

如果IP總是在和該行的,你可以用正則表達式做這種方式

String ip = str.substring(str.lastIndexOf(' ') + 1);