使用正則表達式過濾url鏈接

先把代碼貼出來吧:

                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後面的空格,後面加了個?的意思是說可有可無。

當然我這方法說不上好,只是說出來跟大家分享一下,大家要是有更好的方法,還請不吝賜教哦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章