2010-04-18 59 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。