python re模块正则表达式基础语法实战详解

介绍:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则 字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

话不多说,直接上代码

1. \d 匹配单个数字,相当于[0-9]

import re
#1.\d 匹配单个数字,相当于[0-9]
res = re.findall("\d","abc1ef23g")
print(res)
#输出结果:['1', '2', '3']
res = re.findall("[0-9]","abc1ef23g")
print(res)
#输出结果:同上

2.\D 匹配单个非数字字符,相当于[^0-9]

res = re.findall("\D","abc1ef23g")
print(res)
#输出结果:['a', 'b', 'c', 'e', 'f', 'g']
res = re.findall("[^0-9]","abc1ef23g")
print(res)
#输出结果:同上

3.\s 匹配空白字符串,如空格,换行\n,tab等,相当于[\f\n\r\t\v]

res = re.findall("\s","abc ef\ng\th")
print(res)
#输出结果:[' ', '\n', '\t']
res = re.findall("[ \f\n\r\t\v]","abc ef\ng\th")
print(res)
#输出结果:同上

4.\w 匹配单个字母,数字,或下划线,相当于[A-Za-z0-9_]

res = re.findall("\w","a_b12c!!_")
print(res)
#输出结果:['a', '_', 'b', '1', '2', 'c', '_']
res = re.findall("[A-Za-z0-9_]","a_b12c!!_")
print(res)
#输出结果:同上

5.[aeiou] 匹配字符串中的元音字符(中括号中的任意字符)

res = re.findall("[aeiou]","abcdefg12!!")
print(res)
#输出结果:['a', 'e']

6. . 匹配除换行符外的任意字符串

import re
res = re.findall(".","ab12\n!#")
print(res)
#输出结果:['a', 'b', '1', '2', '!', '#']
#加上re.S,使.能够匹配所有字符串
res = re.findall(".","ab12\n!#",re.S)
print(res)
#输出结果:['a', 'b', '1', '2', '\n', '!', '#']

  7. *代表任意位, +代表至少一位,?代表可有可无

res = re.findall(".*","hello world!")
print(res)
#输出结果:['hello world!', '']
#备注说明:因为空字符串也算一个字符串,而*表示任意位,所以会多一个''匹配结果
res = re.findall(".+","hello world!")
print(res)
#输出结果:['hello world!']
#输出字符串中所有整数
res = re.findall("-?[0-9]+","ab12c-33d45678e99")
print(res)
#输出结果:['12', '-33', '45678', '99']

8.匹配多位数字

#1.匹配两位数字
res = re.findall("[0-9]{2}","1ab12cd345efg66h77!")
print(res)
#输出结果:['12', '34', '66', '77']

#2.匹配两位或三位数字
res = re.findall("\d{2,3}","1ab12cd345efg66h77!")
print(res)
#输出结果:['12', '345', '66', '77']
#3.匹配至少一位以上的数字
res = re.findall("\d{1,}","1ab12cd345efg66h77!")
print(res)
#输出结果:['1', '12', '345', '66', '77']

9.^ 匹配以.....开头, $匹配以....结尾, ^$以....开头且以.....结尾,相当于精确查找

#1.^ 以....开始
res = re.findall("^ang","zhangsan")
print(res)
#输出结果:[]
res = re.findall("^ang","angsan")
print(res)
#输出结果:['ang']
#2.$ 以....结束
res = re.findall("san$","zhangsan")
print(res)
#输出结果:['san']
res = re.findall("san$","zhangsan1")
print(res)
#输出结果:[]
#3.^$ 以...开始且以....结束
res = re.findall("^ang$","ang")
print(res)
#输出结果:['ang']

总结一下:

正则中的元字符说明:

1.[] 表示单个字符的原子表

   [aoeiu] 表示任意一个元音字母

   [0-9] 表示任意一位数字等价于 \d

   [0-9][0-9] 00~99

   [a-z][0-9]表示小写字和一位数字构成的两位字符

   [a-zA-Z0-9_] 表示任意一位大小字母或数字 \w

2.[^] 表示除中括号内原子之外的任何字符 是[]的取反

   [^0-9] 表示任意一位非数字字符 等价于 \D

   [^a-z] 表示任意一位非小写字母

3.{m} 表示对前面原子的数量控制,表示是m次

   [0-9]{4} 表示4位数字0000-9999 等价于\d{4}

   [1][3-8][0-9]{9} 手机号码

   [\-]?[0-9]+  整数

4.{m,} 表示对前面原子的数量控制,表示是至少m次

   [0-9]{2,} 表示两位及以上的数字 等价于\d{2,}

5.{m,n}表示对前面原子的数量控制,表示是m到n次

   [a-z]{6,8} 表示6到8位的小写字母

6.* 表示对前面原子的数量控制,表示是任意次,等价于{0,}

7.+ 表示对前面原子的数量控制,表示至少1次,等价于{1,}

8.? 表示对前面原子的数量控制,表示0次或1次(可有可无) 等价于{0,1}

   正整数:[1-9][0-9]*

   整数: [\-]?[0-9]+

9.() 表示一个整体原子,【还有一个子存储单元的作用】。

  也可以使用?:来拒绝子存储。 (?:.*?)

  例如:(red) 字串red

  (red|blue) 字串red或blue

  (abc){2} 表示两个abc

  | 表示或的意思

  (red|blue) 字串red或blue

10.^ 用在正则单元块的开头处,表示必须以指定的开头

11.$ 用在正则单元块的结尾处,表示必须以指定的结尾

12.. 表示任意一个除换行符之外的字符

   常用组合: .*? 或 .+?   表示最小匹配所有字符(拒绝贪婪匹配)

   .{5}代表任意5位字符

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值