zoukankan      html  css  js  c++  java
  • 正则表达式

    import re

    Python语言默认是贪婪的,但其他语言并不一定是贪婪的 # 想要得到正则匹配后的值需要用 group()获取,但是一定要判断是否取到值,否则会抛异常如果有多个()的话,需要用group(n)来取值 *****
    # 在有固定长度的的表达式匹配时,一定要加开始和结尾的标识符 ***** # 所有的量词都要用在正则规则匹配的后面 ***** # [a-z]d+ ->a123456889...... # [a-z]+d+ ->fdaf...1245687665... """   re.I 忽略大小写   re.L 表示特殊字符集 w, W, , B, s, S 依赖于当前环境   re.M 多行模式   re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)   re.U 表示特殊字符集 w, W, , B, d, D, s, S 依赖于 Unicode 字符属性数据库   re.X 为了增加可读性,忽略空格和 # 后面的注释 """ result = "AB1253C45b67 89a5 dsflghjkl" # re.match(r"regular expression ","需要匹配的内容") #从左到右匹配只取第一个相当与 '^'
    print(re.match(r".*", result,re.S)) #S 忽略
    print(re.match(r"[A-z]+", result))
    print(re.match(r"[0-9]", result)) # re.findall(r"regular expression","需要匹配的内容") #从头到尾都匹配只要匹配到,返回一个列表 print(re.findall(r".", result))
    print(re.findall(r"[a-z]",result,re.IGNORECASE))
    print(re.findall(r"[0-9]",result)) # re.search 扫描整个字符串并返回第一个成功的匹配 # re.search(r"regular expression","需要匹配的内容") #能够匹配包含xxx的字符串 左闭右开下标从0开始
    ret = re.search(r"d+", "阅读次数为 9999") #.group()取数据
    print(ret)print(re.search(r".+", result))
    print(re.search(r"[a-z]+", result))
    print(re.search(r"d+", result)) # re.sub() #将匹配到的数据进行替换 ret = re.sub(r"d+", '998', "python = 997")
    print(ret) # def add(temp):
      count_num = temp.group()

      result = int(count_num) + 1

      return str(result)

    ret1 = re.sub(r"d+", add, "python = 900")
    ret2 = re.sub(r"d+", add, "python = 99")
    print(ret1)
    print(ret2) # eg: str = """ <div>   <p>岗位职责:</p>   <p>完成推荐算法、数据统计、接口、后台等服务器端相关工作</p>   <p><br></p>   <p>必备要求:</p>   <p>良好的自我驱动力和职业素养,工作积极主动、结果导向</p>   <p>&nbsp;<br></p>   <p>技术要求:</p>   <p>1、一年以上 Python 开发经验,掌握面向对象分析和设计,了解设计模式</p>   <p>2、掌握HTTP协议,熟悉MVC、MVVM等概念以及相关WEB开发框架</p>   <p>3、掌握关系数据库开发设计,掌握 SQL,熟练使用 MySQL/PostgreSQL 中的一种<br></p>   <p>4、掌握NoSQL、MQ,熟练使用对应技术解决方案</p>   <p>5、熟悉 Javascript/CSS/HTML5,JQuery、React、Vue.js</p>   <p>&nbsp;<br></p>   <p>加分项:</p>   <p>大数据,数理统计,机器学习,sklearn,高性能,大并发。</p> </div> """ #data = re.sub(r"<[^>]*>|&nbsp;| ",'',str)
    data = re.sub(r"<[^>]+>|&nbsp;| ","",str)
    print(data) # re.split() #根据匹配进行切割字符串,并返回一个列表
    ret = re.split(r":| ","info:xiaoZhang 33 shandong")
    print(ret) # "."能匹配' '以外的所有字符 str1 = "a12345 6879. b" print(re.match(r"^.*", str1)) # "d" digit 匹配数字 print(re.match(r"^d", "12ad34")) # "w" word 能匹配单词字符和汉字 print(re.match(r"^w", "一起去看看")) # "s" space 匹配任意的空白符 print(re.match(r"^s*", " -b 12")) # "D" 匹配非数字 # "W" 能匹配非单词字符 # "S" 匹配非任意的空白符 # " " 匹配换行符 # " " 匹配制表符 # "" 匹配单词的结尾 # "^" 匹配开头 ->startwith 和"$"匹配结尾 ->endwith # "a|b" 或匹配 print(re.match(r"(db|abc)*", "abcdb")) # "()" 匹配括号内的表达式,俗称分组,需要对一个字符串进行整体讨论时,一般用分组 # "[ ]" 一个字符组只能匹配一个位置 # [^a-z] 除a-z的都匹配 # 量词 --> 坐标轴记忆法 # "*" 匹配0次或多次 贪婪匹配 # "+" 匹配1次或多次 贪婪匹配 # "?" 匹配0次或1次 非贪婪匹配 "^[0~9]{14}(d{2}[0-9x])$" # "{n}" 重复n次 # "{n,}" 重复n次到无穷大 # "{m,n}" 重复m到n次(个)


    #匹配标识符
    import re
    # 注意需求 一字一字看,认真看
    # 匹配标识符
    def main():
        all_str = ["args", "kwargs", "__nest__", "enumerate#%&", "yield1", "#12", "apply_async", "join", "join&", "1iter"]
        for str in all_str:
            # result = re.match(r"^[A-z_][A-z0-9_]*", str)
            result = re.match(r"^[A-z_][A-z0-9_]*$", str)
            if result:
                print("该变量%s符合变量的命名规则,通过正则匹配出来的结果是%s" % (str, result.group()))
            else:
                print("该变量%s不符合变量的命名规则" % (str))
    
    
    if __name__ == '__main__':
        main()
    View Code
    
    

    #简单匹配163邮箱

      #万能匹配邮箱正则表达式

        /^[a-z0-9][w.-]*@[a-z0-9-]+(.[a-z]{2,5}){1,2}$/;

    # 匹配邮箱
    def main():
        content_email = input("请输入邮箱账号:")
        ret = re.match(r"^[A-z0-9_]+@163.com",content_email)
        if ret:
            print("这个邮箱账号%s符合当前需求",content_email)
        else:
            print("这个邮箱账号%s不符合我们的需求",content_email)
    
    if __name__ == '__main__':
        main()
    View Code

    #匹配手机号

    # 总长11位,首号必须为1,尾号不能是4/7
    # 匹配手机号
    def main():
        result = input("请输入一个手机号:")
        # ret = re.match(r"^[1]d{9}[0-35689]$", result)
        # ret = re.match(r"^[1]d{9}[^4]|[^7]$",result)
        # ret = re.match(r"^[1]d{9}[^4]$|^[1]d{9}[^7]$",result)
        # ret = re.match(r"^1[0123456789]{9}[0-35689]$", resrult)
        ret = re.match(r"^[1]d{9}([^4]|[^7])$", result)
        if ret:
            print("该手机号%s符合要求", result)
        else:
            print("该手机号%s不符合要求", result)
    
    
    if __name__ == '__main__':
        main(
    View Code
     
  • 相关阅读:
    原根
    FFT
    bzoj3991[SDOI2015]寻宝游戏
    bzoj3990[SDOI2015]排序
    序列自动机
    bzoj4032[HEOI2015]最短不公共子串
    2015.8.28 字符串
    bzoj2821作诗
    bzoj2741【FOTILE模拟赛】L
    一个牛人给java初学者的建议
  • 原文地址:https://www.cnblogs.com/wangxiongbing/p/10076104.html
Copyright © 2011-2022 走看看