在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Python/ 跪求高手把這段正則表達式改得比較簡單一點

跪求高手把這段正則表達式改得比較簡單一點

前些天到網(wǎng)上一段正則,過濾url的代碼如下:

import re
url = '轉(zhuǎn)載請附帶本文網(wǎng)址:http://www.zhangte.org'
P = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
P.sub('',url)

但是這段代碼只可以過濾帶有http的url,如果沒有http,就過濾不了,比如這種url就過濾不了www.zhangte.org

所以我修改一下,變成這種正則

html = "你好www.zhangte.org"
P = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+|(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
P.sub('',html)

但是感覺整體邏輯看起來,很亂,我用的是最簡單最粗暴的方式,直接用|,然后把前面的http[s]?://去掉,然后就拼接起來了,勉強可以用,但是感覺看起來太蛋疼了,有比較好的辦法嗎?

回答
編輯回答
冷咖啡

將前面的http://括起來

P = re.compile('(https?://)?(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
2017年2月18日 02:39
編輯回答
孤客

格式不固定,容易誤殺,提供一種方案吧...

(https?:\/\/)?([^\.\s]\.)+(com|cn|org)

后綴如果不擔(dān)心誤殺可以和前面分組一致,畢竟補全還是比較麻煩的

不知道為啥sf傳不了圖片了...一直報錯,正則示意圖鏈接
2017年11月2日 21:38