2010-04-13 20 views
0

是的 - 另一個noob正則表達式查詢,我似乎無法得到。somone可以幫助修復我的簡單正則表達式查詢嗎?

我試圖獲得字符串foo.mydomain.com/foo.mydomain.com:1234/foo.mydomain.com:<random port>/的所有匹配,但是任何其他路徑不匹配,即。 foo.mydomain.com/barfoo.mydomain.com/bar/pewpew

我試着使用:foo.mydomain.com(.*)/$ (其中任何事情,然後foo.mydomain.com開始,那麼任何事情之後,直到一斜線,然後結束(這個搜索查詢被錨定到行的結尾)

但不工作的時候我通過在foo.mydomain.com:1234它不匹配,但它正確的說foo.mydomain.com/bar/pewpew不匹配(如預期)

任何想法

+0

'foo.mydomain.com'(無尾隨斜線) - 它應該匹配嗎? – 2010-04-13 05:07:10

+0

因爲進入...逃避你的域名中的'。'是一種好習慣。此外,它有助於表達你希望匹配的內容,通常這個正則表達式很容易遵循(如果你能記住語法)。在這種情況下:匹配域,可選地跟一個端口說明符,可選地跟一個斜槓 – CurtainDog 2010-04-13 05:15:47

回答

2

嘗試:。。?

^foo\.mydomain\.com(?::\d+)?/?$ 
  • ^:啓動錨
  • \..是元char..to匹配 文字.你需要\
  • (?:)逃吧:分組
  • \d:一單個數字
  • \d+:一個或多個數字
  • ?:使得以前的模式可選
  • $:尾錨
+0

假設PCRE - 與Perl兼容的正則表達式。刪除'?:',它是一個POSIX ERE(擴展正則表達式)。 (另外,要匹配沒有結尾斜槓的端口號,需要在'$'前面加'/?'。) – 2010-04-13 05:06:29

+0

@ Purne.Krome:正則表達式不匹配** foo.mydomain.com/bar **,你確定檢查正確嗎? – codaddict 2010-04-13 05:24:55

+0

是的,我做到了。這是我的重寫中的另一條路線,正在削弱事情。我在你回覆之前刪除了我的評論,希望你不會看到它:P *腮紅* – 2010-04-13 05:37:23

0
foo\.mydomain\.com(:\d{1,5})?/\s*$ 

試試這一個。

+1

該端口可以超過4個字符.... – 2010-04-13 05:14:46

+0

@Pure。 :哎呀。 0 - 65535.失去了我的想法......一次一個數字。固定。謝謝! – Gishu 2010-04-13 07:56:34