使用正则表达式过滤url链接

先把代码贴出来吧:

String cc = "专业网站建设 欢迎来到http://www.hualai.net.cn";

Pattern pattern = Pattern.compile("[http]{4}\\:\\/\\/[a-z]*(\\.[a-zA-Z]*)*(\\/([a-zA-Z]|[0-9])*)*\\s?");

Matcher matcher = pattern.matcher(cc);

cc = matcher.replaceAll("");

这段代码不难,主要是表示url的这条正则表达式语句怎么理解的问题了,下面就来分解一下:

[http]{4}\\:\\/\\/([a-zA-Z]|[0-9])*(\\.([a-zA-Z]|[0-9])*)*(\\/([a-zA-Z]|[0-9])*)*\\s?

[http]{4}这个大家都懂吧,就是匹配http;

\\:这一部分匹配的是“:”号,这里大家要注意了,在网上找到的大多数的正则表达式都回用到\这个转义符,但是在上述的这段代码里面必须要多添加一个\号即:\\:,这样才能匹配成功。

\\/\\/这个自然是匹配//

([a-zA-Z]|[0-9])*(\\.([a-zA-Z]|[0-9])*)*这段匹配的是主机名(好像是这么叫的,抱歉,太久了都忘了,就是http://www.baidu.com其中的www.baidu.com)在所举的例子里可以看到这一串是由两个.隔开三个字符串构成的,因此要这么匹配:([a-zA-Z]|[0-9])*来匹配www,(\\.([a-zA-Z]|[0-9])*)*这个来匹配.baidu.com,这是个多次匹配

(\\/([a-zA-Z]|[0-9])*)* 这个匹配的是这种情况:(http://www.hualai.net.cn/webcase/)它匹配的就是/webcase的情况,当然如果后面还有类似字符的话,再来个多次匹配就ok了

最后说下\\s?这匹配的是url后面的空格,后面加了个?的意思是说可有可无。

当然我这方法说不上好,只是说出来跟大家分享一下,大家要是有更好的方法,还请不吝赐教哦。

相关推荐