2012-02-04 31 views
1

正在使用以下正則表達式來捕獲引用者url的不同部分。我想捕獲協議和域名,並在差異場景中使用它。從Referer獲取域名的正則表達式

Pattern pr=new Patters("^\w+://|[^\/:]+|[\w\W]*$"); 

但是Eclipse是給我和錯誤

Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\).. 

是新來的正則表達式。誰可以幫我這個事?

+0

我有一個問題,所以我決定使用正則表達式 - 現在我有兩個問題... – Alnitak 2012-02-04 11:00:40

+0

'[\ w \ W] *'將匹配任何東西,甚至是一個空字符串。 – Toto 2012-02-04 11:07:19

+0

@ M42在這種情況下並不重要,因爲他沒有使用該字段。 – Alnitak 2012-02-04 11:08:46

回答

3

您正在向Pattern構造函數提供一個字符串,因此您需要轉義反斜槓。

如:

Pattern pr = new Pattern("^\\w+://|[^/:]+|[\\w\\W]*$"); 

你的正則表達式是可能尚未完成 - 你需要「組」用方括號括方案和域部分:

Pattern pr = new Pattern("^(\\w+)://([^/:]+)"); 

我以後的一切忽視下一個冒號或斜槓 - 你說你只是想要計劃和領域。

+0

Thannks很多。它的作品:) – rkhm 2012-02-04 11:36:14

0

正則表達式使用「\」(例如,\ w,\ W,\ d,\ D)作爲起始字符來定義正則表達式語法。 Java也使用「\」。 Java也允許通過添加一個額外的「\」來使用「\」,所以你最終會在你的代碼中使用「\\」,這將會跳過另一個反斜槓。

以防萬一您的解決方案不符合您的預期嘗試使用「regexpal.com」。 請記住,只要您希望在結果中使用單斜槓(「\」),請在代碼中使用雙斜線(「\\」)。