Java正则表达式只匹配没有协议和www的URL

时间:2014-03-22 20:44:02

标签: java regex

我需要一个相当贪婪的正则表达式,它积极地匹配不以任何协议开头的字符串,例如" http://"或" ftp://"并且同时不匹配以" www"开头的字符串。 (当然,两者结合起来)。我是Java和正则表达式的新手,但我已经设法弥补了这一点(对我来说不起作用):

([\w'-]+)\.(com|info|net|org).+

然而,它似乎并不匹配" example.com"。它似乎匹配" example.com/index.php?q = somequery #sthing"。如果字符串以一系列字符开头,我并不真正理解如何创建一个没有匹配的正则表达式,在我的情况下" www"或" http://"。

感谢任何帮助。

(PS我试图寻找这个问题的愚蠢,但是我无法找到一个完全匹配这个问题。非常抱歉,如果这是一个骗局。)

1 个答案:

答案 0 :(得分:1)

你的正则表达式最后有.+。这意味着any character except \n (1 or more times)

但您的样本example.com.com之后没有任何内容。这就是你的正则表达式与样本不匹配的原因。

.+替换为.*,它将对您有用。仅供参考.*表示any character except \n (0 or more times)