• Python-正则表达式入门练习笔记


    正则表达式入门练习笔记

    目录

    1.单个字符匹配

    2.多个字符匹配

    3.匹配开头结尾

    4.分配分组

    活动地址:CSDN21天学习挑战赛

    import re   #导入re模块
    1. result=re.match('qwer','qwerty') #使用match方法进行匹配
    2. result.group() #使用group方法进行数据提取
    3. 'qwer'

    1.单个字符匹配

    • .        匹配任意1个字符(除了\n)
    • []       匹配[]中列举的字符 \d 匹配数字,既0-9
    • \D     匹配非数字,既不是0-9
    • \s      匹配空格,既空格,tab键
    • \S     匹配非空白
    • \w     匹配单词字符,既a-z,A-Z,0-9,_
    • \W    匹配非单词字符
    1. 练习1: 任意匹配一个字符
    2. ret=re.match(".","M")
    3. print(ret.group())
    4. M
    5. 练习2:匹配长串字符
    6. ret=re.match("l...","love")
    7. print(ret.group())
    8. love
    9. 练习3:选择开头匹配一个字符
    10. ret=re.match("[hH]","hello")
    11. print(ret.group())
    12. h
    13. 练习4:选择开头匹配一串字符
    14. ret=re.match("[hH]ello","Hello")
    15. print(ret.group())
    16. Hello
    17. 练习5:数字开头匹配
    18. ret=re.match("[0123456789]hello","6hello")
    19. print(ret.group())
    20. 6hello
    21. 练习6:有范围数字匹配
    22. ret=re.match("[0-36-9]hello","9hello")
    23. print(ret.group())
    24. 9hello
    25. 练习7:数字匹配
    26. ret=re.match("空军\d号","空军1号")
    27. print(ret.group())
    28. 空军1

    2.多个字符匹配

    • *       匹配前1个字符出现0次或者无限次,既可有可无
    • +      匹配前1个字符出现1次或者无限次,既至少有1次
    • ?     匹配前1个字符出现1次或者0次,既要么有1次,要么没有
    • {m}   匹配前1个字符出现m次 {m,n} 匹配前1个字符出现m到n次
    1. import re
    2. 练习1:匹配第一个字母为大写,后面为小写且可有可无
    3. ret=re.match("[A-Z][a-z]*","M") ​
    4. print(ret.group())
    5. M
    6. 练习2:匹配一串第一个字母为大写,后面为小写且可有可无
    7. ret=re.match("[A-Z][a-z]*","MasRdfH")
    8. print(ret.group())
    9. Mas
    10. 练习3:判断names是否符合第一个字母为大写,小写或者下划线
    11. names=["name1","_name","2_name","__name__"]
    12. for name in names:
    13. ret=re.match("[a-zA-Z_]+[\w]*",name)
    14. if ret:
    15. print("变量名 %s 符合要求" % ret.group())
    16. else:
    17. print("变量名 %s 非法" % name)
    18. 变量名 name1 符合要求
    19. 变量名 _name 符合要求
    20. 变量名 2_name 非法
    21. 变量名 __name__ 符合要求
    22. 练习4:匹配数字
    23. ret=re.match("[1-9]?\d","33"):​
    24. print(ret.group())
    25. 33
    26. 练习5:?????why
    27. ret=re.match("[1-9]?\d","09")
    28. print(ret.group())
    29. 0
    30. 练习6:匹配6位是否包含a-z,A-Z,0-9,_
    31. ret=re.match("[a-zA-Z0-9_]{6}","12ad45ad78ad")
    32. print(ret.group())
    33. 12ad45
    34. 练习7:匹配8-30位密码 包含a-z,A-Z,0-9,_,*
    35. ret=re.match("[a-zA-Z0-9_*]{8,30}","12ad_45ad7_8a*d66666")
    36. print(ret.group())
    37. 12ad_45ad7_8a*d66666
     
    

    3.匹配开头结尾

    • ^   匹配字符串开头
    • $   匹配字符串结尾
    1. 练习1:匹配手机号11
    2. ret=re.match("^135[0-9]{8}","13566666666")
    3. print(ret.group())
    4. 13566666666
    5. 练习2:判断邮箱地址是否符合规定
    6. email_list=["xiaowang@163.com","xiaoqing@6","xialiu"]
    7. for email in email_list:
    8. ret=re.match("[\w]{4-20}@163\.com$",email)
    9. if ret:
    10. print("%s 符合邮件地址规定" % ret.group)
    11. else:
    12. print("%s 不符合要求" % email)
    13. xiaowang@163.com 不符合要求
    14. xiaoqing@6 不符合要求
    15. xialiu 不符合要求
     
    

    4.分配分组

    • |                     或
    • (ab)               将括号中字符作为一个分组
    • \num              引用分组num匹配到的字符串
    • (?P)               分组起别名
    • (?P=name)    引用别名为name分组匹配到的字符串
    1. 练习1:判断数字是否小于100
    2. ret=re.match("[1-9]?\d$|100","8")
    3. print(ret.group())
    4. 8
    5. 练习2:判断邮箱是否是163126或qq邮箱
    6. email_list=["a@163.com","b@qq.com","c@126.com","d@gmail.com"]
    7. for email in email_list:
    8. ret=re.match("[\w]{1,20}@(163|126|qq)\.com",email)
    9. if ret:
    10. print("%s 属于邮箱范围" % ret.group())
    11. else:
    12. print("%s 不属于163或126或qq邮箱" % email)
    13. a@163.com 属于邮箱范围
    14. b@qq.com 属于邮箱范围
    15. c@126.com 属于邮箱范围
    16. d@gmail.com 不属于163126或qq邮箱
    17. 练习3:提取区号和电话号码
    18. ret=re.match("([^-]*)-(\d+)","010-123456")
    19. print(ret.group())
    20. print(ret.group(1))
    21. print(ret.group(2))
    22. 010-123456
    23. 010
    24. 123456

    
                    
  • 相关阅读:
    2023年-华为机试题库B卷(Python)【满分】
    整理最新java面试宝典2019
    js正则案例
    第一章 指针仪表识别之仪表检测
    Linux 进程切换与命令行参数
    进阶JAVA篇- Collection 类的常用的API与 Collection 集合的遍历方式
    探索人工智能 | 模型训练 使用算法和数据对机器学习模型进行参数调整和优化
    软件测试/测试开发丨Python模块与包 学习笔记
    Redis数据库的简介、部署及常用命令----【重点!】
    Mac的设置与优化...持续更新
  • 原文地址:https://blog.csdn.net/StrawBerryTreea/article/details/126135918