2017-03-16 23 views
0

我怎麼能匹配警告以下,其中IP地址可以改變:匹配已知主機在正則表達式

Warning: Permanently added '100.124.61.161' (RSA) to the list of known hosts. 

提前感謝!

+0

利用/ d,以匹配數字。使用/ d +匹配1或更多。 – stevesliva

+0

用一個有效的IP正則表達式交換'100.124.61.161'。 http://stackoverflow.com/questions/5284147/validating-ipv4-addresses-with-regexp – chris85

+0

@stevesliva我相信你的意思是'\ d'和'\ d +';) – stevieb

回答

3

您可以嘗試下面的代碼,更改字符串以僅限制特定文本。

if($string =~ m/Warning: Permanently added '(.*?)' \(RSA\) to the list of known hosts\./) 
{ 
    print "Match Successful, IP address: $1\n"; 
} 
else 
{ 
    print "String did not match\n"; 
} 
+0

如果只能有一個IP地址,這可以。 OP甚至不關心捕獲IP。你不需要轉義冒號':',它在正則表達式中沒有特殊含義。 – simbabque

1

爲IPv4的(沒有端口)的一般的正則表達式。將
(?<!\d)(?:\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(?:\.(?:\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}(?!\d)

解釋

(?<! \d) 
(?: 
     \d      # 0 - 9 
    | [1-9] \d    # 10 - 99 
    | 1 \d{2}     # 100 - 199 
    | 2 [0-4] \d    # 200 - 249 
    | 25 [0-5]    # 250 - 255 
) 
(?: 
     \. 
     (?: 
      \d 
     | [1-9] \d 
     | 1 \d{2} 
     | 2 [0-4] \d 
     | 25 [0-5] 
    ) 
){3} 
(?! \d) 
+0

我不確定你必須擔心不匹配256.256.256.256 – stevesliva

+0

@stevesliva - 是嗎?即使這個世界只包含數字和點而已? – sln

+0

「我可以如何匹配以下IP地址可以更改的地方。」這個複雜的正則表達式很好,解釋也很好 - 如果你擔心輸入不是IP。但它似乎並沒有完全回答這個問題。 – stevesliva