加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

学习笔记-正则表达式

发布时间:2020-12-14 06:45:49 所属栏目:百科 来源:网络整理
导读:search # search() 方法用于在字符串中搜索正则表达式第一次出现的位置。 import re re . search ( r'FishC' , 'I love FishC.com!' ) _sre . SRE_Match object ; span =( 7 , 12 ), match = 'FishC' # . 用于表示除了换行的任何一个字符(此列返回了第一个

search

# search() 方法用于在字符串中搜索正则表达式第一次出现的位置。
>>> import re
>>> re.search(r'FishC','I love FishC.com!')
<_sre.SRE_Match object; span=(7,12),match='FishC'>
# . 用于表示除了换行的任何一个字符(此列返回了第一个字符I)
r'.',68);">0,68);">1),17);">'I'# 要匹配.本身,则加一个元字符
r'.',68);">12,68);">13),17);">'.'>

数字匹配


# d 用于匹配任意一个数字,等效于 [0-9]
# 匹配1个数字
r'd',17);">'I love 123 FishC.com')
8),17);">'1'# 匹配3个数字
r'ddd',68);">10),17);">'123'# 匹配2个数字
r'd{2}',68);">9),17);">'12'范围匹配
# 使用[]来匹配一定范围
# 默认对大小写敏感
# [aeiou]用于匹配 aeiou中任意一个字符
r'[aeiou]',68);">3,68);">4),17);">'o'# [a-g] 用于匹配 a至g之时的任意一个字符.[0-5]用于匹配0-5之间的任意一个数字
r'[a-g]',68);">5,68);">6),17);">'e'次数匹配
# 使用{}匹配次数
>>> a = 'abbbccc1234'
# 匹配b三次
r'ab{3}',a)
'abbb'# 匹配b4次(无结果没返回值)
r'ab{4}',a)
# 匹配2-4次
r'ab{2,4}',0);"># 最少匹配2次
# 最多匹配4次
r'ab{,26);">>
>>>

小练习

匹配255之间的数

# 思考:re.search(r'[0-255]','188')会匹配出什么?
r'[0-255]',17);">'188')
# 解析:[0-255]表示匹配0-2与5与5,则匹配0,1,2,5中任意一个字符

# 思考: re.search('[0-2][0-5][0-5]',17);">'[0-2][0-5][0-5]',17);">'188')
# 解析:[0-2][0-5][0-5] 表示一个 第一位是0-2,第二位是0-5第三位是0-5的一个三位数

# 表达式:[01]dd|2[0-4]d|25[0-5]
r'[01]dd|2[0-4]d|25[0-5]',68);">3),17);">'188'# 存在问题:无法匹配18,5等低于3位数,仅能匹配018,005

# 正确的表达式: [01]{,1}d{,1}d|2[0-4]d|25[0-5]

IP地址匹配

# 方法1:
# 表达式 ddd.ddd.ddd.ddd
# 存在问题:仅能匹配三位数的IP,且不能匹配出正确范围
# 例:正确匹配
'ddd.ddd.ddd.ddd',17);">'sdf192.168.123.123sdafkj')
18),17);">'192.168.123.123'# 例:错误匹配
# 范围超出
'sdf555.666.777.888sdafkj')
'555.666.777.888'# 无匹配项
'sdf192.168.12.123sdafkj')

# 方法2:
# 表达式 (([01]dd|2[0-4]d|25[0-5]).){3}[01]dd|2[0-4]d|25[0-5]
# 存在问题:能正确匹配范围,但仅能匹配出每字段为3位的IP地址。例可以匹配192.168.200.100但不能匹配192.168.1.1
r'(([01]dd|2[0-4]d|25[0-5]).){3}[01]dd|2[0-4]d|25[0-5]',17);">'192.168.200.100')
15),17);">'192.168.200.100'>

# 方法3
# 表达式: (([01]{,1}d|2[0-4]d|25[0-5]).){3}[01]{,1}d|2[0-4]d|25[0-5]
r'(([01]{,1}d|2[0-4]d|25[0-5]',17);">'192.168.1.12')
'192.168.1.12'>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读