2010-04-18 58 views
1

我有爪哇 - 正則表達式的問題

  • http://www.example.com/pk/ca類型的URL列表,
  • http://www.example.com/pk
  • http://www.example.com/anthingcangoeshere/pk
  • http://www.example.com/pkisnotnecessaryhere

現在,我要找出只有那些與/pk/pk/結束,並沒有在.com/pk之間

+2

你的問題不是很清楚。給你更多的例子,你想要匹配什麼,你不想匹配。 – 2010-04-18 10:13:37

+0

現在還不清楚。該網址是否必須包含「.com」? – 2010-04-18 10:15:38

+0

@Mark yes,它應該包含'.com' – 2010-04-18 10:17:08

回答

1

您的問題沒有完全確定什麼,所以我不能給的網址你一個確切的答案,但是這應該是一個開始,你可以使用:

 
^[^:]+://[^/]+\.com/pk/?$ 

這些字符串將匹配:

 
http://www.example.com/pk 
http://www.example.com/pk/ 
https://www.example.com/pk 

這些字符串不匹配:

 
http://www.example.co.uk/pk 
http://www.example.com/pk/ca 
http://www.example.com/anthingcangoeshere/pk 
http://www.example.com/pkisnotnecessaryhere 
1
String pattern = "^http://www.example.com/pk/?$"; 

希望這有助於。

一些細節:如果您沒有將^添加到模式的開頭,那麼foobarhttp://www.example.com/pk/也會被接受。如果您未將$添加到該模式的末尾,則也會接受http://www.exampke.com/pk/foobar

0
String pattern = "^https?://(www\.)?.+\\.com/pk/?$"; 
+0

這匹配'「http://files.net/command.com/pk」' – polygenelubricants 2010-04-18 12:41:51

1

直接翻譯你的要求「[...]網址與/或PK/PK /並沒有什麼在.com和/之間的PK結束」,與另外的假設,即始終應是 「.COM」,得到這個表達式:

如果使用find()

\.com/pk/?$ 

如果使用matches()

.*\.com/pk/? 

這裏給出的其他答案給出了更多限制性模式,只允許更接近你的例子的URL。特別是我的模式不驗證給定的字符串是一個語法上有效的URL。