为了账号安全,请及时绑定邮箱和手机立即绑定

跪求高手把这段正则表达式改得比较简单一点

跪求高手把这段正则表达式改得比较简单一点

月关宝盒 2019-05-23 11:21:26
前些天到网上一段正则,过滤url的代码如下:importreurl='转载请附带本文网址: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]?://去掉,然后就拼接起来了,勉强可以用,但是感觉看起来太蛋疼了,有比较好的办法吗?
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

将前面的http://括起来
P=re.compile('(https?://)?(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
                            
查看完整回答
反对 回复 2019-05-23
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

格式不固定,容易误杀,提供一种方案吧...
(https?:\/\/)?([^\.\s]\.)+(com|cn|org)
后缀如果不担心误杀可以和前面分组一致,毕竟补全还是比较麻烦的
不知道为啥sf传不了图片了...一直报错,正则示意图链接
                            
查看完整回答
反对 回复 2019-05-23
  • 2 回答
  • 0 关注
  • 318 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信