打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python正则表达式(一看就懂)

目录

https://blog.csdn.net/m0_64036070/article/details/123853489?spm=1001.2100.3001.7377&utm_medium=distribute.pc_feed_blog_category.none-task-blog-classify_tag-2.nonecase&depth_1-utm_source=distribute.pc_feed_blog_category.none-task-blog-classify_tag-2.nonecase

哈喽O(∩_∩)O😄

什么是正则表达式(⊙_⊙)

简单说,正则表达式是…

正则表达式怎么用❓

sreach的用法🍊

匹配连续的多个数值🍉

 字符"+"重复前面一个匹配字符一次或者多次🍉

字符"*"重复前面一个匹配字符零次或者多次🍉

字符"?"重复前面一个匹配字符零次或者一次🍉

特殊字符使用反斜杠"“引导,例如”\r"、"\n"、"\t"、"\"分别表示回车、换行、制表符号与反斜线自己本身

 完整表🔍

 match用法🤔

match用法😃

 match对象🍊

数量词🍊

匹配开头、结尾🍊

 匹配分组🔍

match总结😄

实践出真知 凸(`0´)凸 ☀️

写在最后🧐


哈喽O(∩_∩)O😄

今天来发一下python正则表达式,其实这个也是比较简单的

肝了好几个小时才写出来呀

什么是正则表达式(⊙_⊙)

目前越来越多的网站、编辑器、编程语言都已支持一种叫“正则表达式”的字符串查找“公式”,有过编程经验的同学都应该了解正则表达式(Regular Expression 简写regex)是什么东西,它是一种字符串匹配的模式(pattern),更像是一种逻辑公式。

简单说,正则表达式是…

python中必备的工具,主要是用来查找和匹配字符串的。

正则表达式尤其在python爬虫上用的多。

正则表达式怎么用❓

首先,我们要导入头文件(写c++写习惯了)模块

import re

因为re是内置模块,所以不需要额外安装,就很银杏

sreach的用法🍊

匹配连续的多个数值🍉

  1. import re
  2. r=r"\d+"
  3. m=re.search(r,"YRYR567eruwgf")#目标是567
  4. print(m)

re模块中,r“\d+”正则表达式表示匹配连续的多个数值,search是re中的函数,从"YRYR567eruwgf"字符串中搜索连续的数值,得到"567"

结果:

可以看到,搜索到了连续值“567”

 字符"+"重复前面一个匹配字符一次或者多次🍉

  1. import re
  2. r=r"b\d+"
  3. m=re.search(r,"a12b1233cd")
  4. print(m)

 这样,结果就是b后面的连续数字

结果:

字符"*"重复前面一个匹配字符零次或者多次🍉

“*" 与 "+"类似,但有区别,列如:
可见 r"ab+“匹配的是"ab”,但是r"ab
 “匹配的是"a”,因为表示"b"可以重复零次,但是”+“却要求"b"重复一次以上

  1. import re
  2. r=r"ab+"
  3. m=re.search(r,"acabc")
  4. print(m)
  5. r=r"ab*"
  6. m=re.search(r,"acabc")
  7. print(m)

 结果:

字符"?"重复前面一个匹配字符零次或者一次🍉

匹配结果"ab”,重复b一次 

  1. import re
  2. r=r"ab?"
  3. m=re.search(r,"abbcabc")
  4. print(m)

 结果:

特殊字符使用反斜杠"“引导,例如”\r"、"\n"、"\t"、"\"分别表示回车、换行、制表符号与反斜线自己本身

  1. import re
  2. r=r"a\nb"
  3. m=re.search(r,"ca\nbcaba")
  4. print(m)

 结果:

 完整表🔍

其实上面说这些都是比较基础,比较简单的,还有复杂一点的,都在这张表里

 match用法🤔

match用法😃

语法:re.match(pattern, string[, flags])  

从首字母开始开始匹配,string如果包含pattern子串,则匹配成功,返回Match对象,失败则返回None,若要完全匹配,pattern要以$结尾。

  1. #示例:
  2. name='张三'
  3. if re.match('张\w+',name):
  4. print('{},你好!'.format(name))
  5. # 张三,你好!

输出结果:张三,你好

张三:谁叫我?

不开玩笑了,继续

总的来说,match就是

  • 返回匹配的match对象
  • 默认从给定字符串的开头开始匹配、即使正则表达式没有用^声明匹配开头

 match对象🍊

Match对象的几个属性: 

注意,前面是有“.”的
1..string 待匹配的文本
2..re 匹配使用的pattern对象
3..pos 正则表达式搜索文本的开始位置
4..endpos 正则表达式搜索文本的结束位置
Match对象的几个方法: 
1.group(0) 返回匹配到的子串
2.start() 返回匹配子串的开始位置
3.end() 返回匹配子串的结束位置
4.span() 返回start()、end()

数量词🍊

匹配开头、结尾🍊

 匹配分组🔍

好了,看了上面几张表,其实我觉得最重要的在下面

  

match总结😄

其实没啥好总结的,但你要看懂这张图,这个很重要

 我框出来的是我自己感觉经常用的

其实我自己刚学的时候也听不懂,现在觉得可简单了

所以,你应该现在就觉得很简单吧?

但是,正则表达式的字符很多,容易记混,一不小心就好几十个报错,很让人崩溃

实践出真知 凸(`0´)凸 ☀️

学了这么多,是不是想撸个程序了?

已经给你准备好了

程序效果:输入手机号,通过正则表达式判断手机号合不合法,

如果合法,就输出这个手机号的信息(所属地等)

如果不合法,就重新输入,简单吧?

这里我想重点说一下怎么获取手机号的信息

我一开始打算上网上百度一波的,没想到直接复制过来23个报错、我也是醉了

哎呀,不能再发表情包了

ε=(´ο`*)))唉,还是自己写吧、、、

我想起了有个模块叫phone,可以实现这个功能

但是你可能还没有安装这个模块,要按命令行模式下输入pip install phone

等个六六四十九秒就下载下来了

然后你就可以体验一下了

代码(PyCharm运行通过)

  1. import phone
  2. from time import *
  3. import re
  4. def begin():
  5. print("欢迎来到查询小程序")
  6. print("1.查询")
  7. print("2.用户")
  8. def p(n):
  9. if re.match(r'1[3,4,5,7,8]\d{9}', n):
  10. if re.match(r'13[0,1,2]\d{8}', n) or \
  11. re.match(r"15[5,6]\d{8}", n) or \
  12. re.match(r"18[5,6]", n) or \
  13. re.match(r"145\d{8}", n) or \
  14. re.match(r"176\d{8}", n):
  15. return True
  16. elif re.match(r"13[4,5,6,7,8,9]\d{8}", n) or \
  17. re.match(r"147\d{8}|178\d{8}", n) or \
  18. re.match(r"15[0,1,2,7,8,9]\d{8}", n) or \
  19. re.match(r"18[2,3,4,7,8]\d{8}", n):
  20. return True
  21. else:
  22. return True
  23. else:
  24. return False
  25. if __name__ == "__main__":
  26. s=0
  27. begin()
  28. while True:
  29. op = int(input("请输入:"))
  30. if op==1:
  31. phoneNum = str(input("请输入你的电话号码"))
  32. if p(phoneNum)==False:
  33. print("该手机号无效")
  34. for i in range(100):
  35. print('\n')
  36. begin()
  37. else:
  38. info = phone.Phone().find(phoneNum)
  39. print("手机号码:"+str(info["phone"]))
  40. print("手机所属地:"+str(info["province"])+"省"+str(info["city"])+"市")
  41. print("邮政编号:"+str(info["zip_code"]))
  42. print("区域号码:"+str(info["area_code"]))
  43. print("手机类型:"+str(info["phone_type"]))
  44. s+=1
  45. i = input("输入任意数退出...")
  46. for i in range(100):
  47. print('\n')
  48. begin()
  49. if op==2:
  50. print("使用次数:"+str(s))
  51. i = input("输入任意数退出...")
  52. for i in range(100):
  53. print('\n')
  54. begin()

感谢您的阅读,拜拜!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python正则表达式
零基础写python爬虫之神器正则表达式
Python学习
正则表达式不是一天能学会的!这是我花七天整理的!希望能帮到你
python 正则表达式re模块
爬虫入门教程 —— 3
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服