先把代码贴出来吧:
String cc = "立足农村,传播科技、提升价值,等待您的入住http://t.cn/SXiTPi";
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.aiyuke.com/video/)它匹配的就是/video的情况,当然如果后面还有类似字符的话,再来个多次匹配就ok了
最后说下\\s?这匹配的是url后面的空格,后面加了个?的意思是说可有可无。
当然我这方法说不上好,只是说出来跟大家分享一下,大家要是有更好的方法,还请不吝赐教哦。