先把代碼貼出來吧:
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後面的空格,後面加了個?的意思是說可有可無。
當然我這方法說不上好,只是說出來跟大家分享一下,大家要是有更好的方法,還請不吝賜教哦。