正则 大于100的整数_python正则表达式实例

dfc3759740bc425ec39e287cec179f42.gif

正则表达式的基本知识

正则表达式是一种文本模式,包括:

  •     普通字符:如a-z之间的字母

  •     特殊字符:称为元字符

正则表达式是单个字符串,是用于匹配一系列某个句法规则的字符串。

常用元字符如下

元字符描述
^匹配输入字行首
$匹配输入行尾
*

匹配前面的子表达式任意次,相当于{0,}

+匹配前面的子表达式1次或多次,大于等于1次,等价于{1,}
?匹配前面的子表达式零次或一次,等价于{0,1}
{n}非负整数,匹配确定的n次
{n,}非负整数,至少匹配n次
{n,m}非负整数,最少匹配n次且最多匹配m次
.匹配除'\n','\r'之外的任何单个字符
|指明两项之间的一个选择

实例

通过执行命令ping www.baidu.com, 查找 返回值中的ip地址。

C:\Users>ping www.baidu.com正在 Ping www.a.shifen.com [112.80.248.76] 具有 32 字节的数据:来自 112.80.248.76 的回复: 字节=32 时间=15ms TTL=54来自 112.80.248.76 的回复: 字节=32 时间=15ms TTL=54来自 112.80.248.76 的回复: 字节=32 时间=20ms TTL=54来自 112.80.248.76 的回复: 字节=32 时间=15ms TTL=54112.80.248.76 的 Ping 统计信息:    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位):    最短 = 15ms,最长 = 20ms,平均 = 16ms

分析IP地址特点:

IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用英文句点“.”隔开。

IP地址的数字组成:250-255、200-249、0-199。这三种情况可以分开考虑:

  1. 250-255:三位数,百位是2,十位是5,个位是0~5,用正则表达式可以写成: 25[0-5]

  2. 200-249:三位数,百位是2,十位是0~4,个位是0~9,正则表达式可以写成:2[0-4]\d

  3. 0-199:这个又可以分拆为三个部分,这样写起来更加简单明了:

  • 0-9:   特点:一位数,个位是0~9,用正则表达式可以写成:\d

  • 10-99:  特点:二位数,十位是1~9,个位是0~9,用正则表达式可以写成:[1-9]\d

  • 100-199:特点:三位数,百位是1,十位是0~9,个位是0~9,用正则表达式可以写成:1\d{2}

于是0-99的正则表达式可以合写为[1-9]?\d,那么0-199用正则表达式就可以写成(1\d{2})|([1-9]?\d),这样0~255的正则表达式就可以写成(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))

最后,前面3段加上句点.可以使用{3}重复得到,第4段再来一次同样的匹配,得到IP地址的正则表达式:

((25[0-5]|2[0-4]\d|(1\d{2})|([1-9]?\d)).){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)

程序如下:

import osimport ref = os.popen(r'ping www.baidu.com', 'r')str = f.read()f.close()# pattern = r"((25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)"pattern = r"(((25[0-5]|2[0-4]\d|(1\d{2})|([1-9]?\d)).){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d))"datas = re.search(pattern, str)print(datas)print(datas.group())

上面的程序运行结果如下:

D:\autoTest\venv\Scripts\python.exe D:/autoTest/2020_0217_2121.py<_sre.sre_match object span="(<span">27, 112.80.248.75Process finished with exit code 0
fee802e092cd50f0f1972c4bda8afeb6.png 77e7a19b43c84e7b32e8ea7ddeb685da.png

听说关注我们的人 都升职加薪啦

你要做的

无非是

长按关注

cf08056c654fb5feeda6438cb5a6d823.gif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值