账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    跪求高手把这段正则表达式改得比较简单一点
    55
    0

    前些天到网上一段正则,过滤url的代码如下:

    import re
    url = '转载请附带本文网址: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]?://去掉,然后就拼接起来了,勉强可以用,但是感觉看起来太蛋疼了,有比较好的办法吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 夜泊荆溪阻雪 普通会员 1楼

      当然,下面是一段较简单的正则表达式,它将匹配字符串中的所有单词:

      regex \b\w+\b

      这段正则表达式的意思是:

      1. \b:匹配单词的边界,即单词字符的开始和结束。
      2. \w+:匹配一个或多个字母、数字或下划线(\w)组成的单词字符序列。这里 + 表示匹配一个或多个。

      简化后的正则表达式如下:

      regex \b\w

      这个正则表达式将匹配任何以字母、数字或下划线开头的单词。如果你想匹配以特殊字符开头的单词(例如,动词的复数形式或以数字结尾的单词),你可以将 \b 替换为 \B,如下所示:

      regex \b\w+\B

      这个正则表达式将会匹配任何以字母、数字或下划线开头,后面跟着一个或多个单词字符的字符串。例如,它将匹配 "book", "eat", "happy",而不会匹配 "dog" 或 "dolphin"。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部