2009-10-06 78 views
-3

表達我怎麼能與像123-45-67-89.dummy37.ipx.northtelecom.net.ukq6415-ipbffx02alas.tokyo.ocx.wa.jp正則表達式匹配的主機?普通主機

其他信息,一些樣品(我修改了隱私的原因,某些主機):

  • abc953.internetdsl.uwnet.pl
  • ip-200-200-200-200.static.puxdsl.pt .lu
  • 123-123-45-45.cost.xligtik.se
  • saul-wilhem-c-118-37.sewl-net.com
  • 靜態80-80-250-230.sdsl91 .rokh.ny.premiernet.net
  • static-ip-cr73 415187.kable.net.ca

主機必須不匹配:例如,主機像foo---bar.example.comfoo...bar.example.com

解決:我應該已經解決了以下模式:

/((?:[a-z0-9\-]*\.){1,}[a-z0-9\-]*)/ 
+2

你的建議的正則表達式匹配'富... bar.example.com',你說你不能匹配。 – 2009-10-06 09:51:49

+0

那麼,我不需要驗證主機名,而是要捕獲現有的日誌文件。上述模式對我的工作來說是完美的。 – Paryeshakaya 2009-10-09 21:38:13

回答

1

與這些主機名匹配的正則表達式可能是:

[-.0-9a-z]+ 

但是,這可能會比你想要的要多得多。你必須更具體地說明你想要匹配什麼(以及你想要匹配什麼不是)。

+0

這將匹配.abcd,這可能不是一件好事 – 2009-10-06 08:26:18

+0

這是正確的,這就是爲什麼我提到OP需要更準確地知道正則表達式應該匹配什麼*正確表達式。 – 2009-10-06 08:29:26

+0

這一個真是太*簡潔。它甚至匹配'....' – soulmerge 2009-10-06 08:34:29

0

哪種語言?下面應該工作在最

[a-z0-9-]+\([a-z0-9-.]+\)* 
+0

它應該用在PHP腳本中 – Paryeshakaya 2009-10-06 08:27:07

+0

我不知道PHP。你需要檢查分組是如何工作的,我已經在這裏使用了\\(和\\)。 @阿諾的答案以上http://stackoverflow.com/questions/1524266/regular-expression-for-host/1524281#1524281可能比我更有用。 – 2009-10-06 08:37:41

0

你想知道主機名正則表達式通常應該怎麼看還是你有兩個例子匹配到一個特定的問題?

有關正則表達式的主機名你可能會發現這裏的討論: Regular expression to match DNS hostname or IP Address?

+0

@arno:謝謝你的建議,但我看過你提出的討論,但它沒有幫助我 – Paryeshakaya 2009-10-06 08:53:53