No13.正则表达式和python中的re模块

1、正则表达式的作用

做字符串的匹配

2、正则表达式的规则

  • 字符组:[字符组]。在同一个位置可能出现的各种字符串组成的一个字符,在正则表达式中用[]表示,字符分为很多类,比如数字、字母、标点等

  • 元字符。

(1).           匹配除了换行符以外的任意字符

(2) \w       匹配字母、数字、下划线

(3) \s        匹配任意的空白符

(4) \d        匹配数字

(5) \W       匹配非数字、字母、下划线

(6) \S        匹配非空白符

(7) \D        匹配非数字

(8) \n         匹配一个换行符

(9) \t          匹配一个制表符

(10) \b       匹配一个单词的结尾

(11) ^        匹配字符串的开始

(12) $        匹配字符串的结束

注意:若^和$遇在一起则约束整个字符串 

(13) a|b      匹配a或b

(14)  ()        匹配括号内的表达式,也表示一个组

(15)  [^...]    只要字符组内出现了^就匹配除了字符组中字符的所有字符

  • 量词:所有量词都必须用在正则规则的后面,所有的量词都只能约束它前面的一个规则

(1)   *     匹配零次和多次

(2)   +     匹配一次或多次

(3)   ?     匹配零次或一次

(4)   {n}   重复n次

(5)   {n, }  最少匹配n次

(6)    {n, m}  匹配n次到m次

  • 其他

(1)    .*?   取尽量少的任意字符,一般不会单独写。.*?x取前面任意长度的字符,知道一个x出现

  • re模块
import re

#findall 分组优先
ret = re.findall('[a-z]+', 'eva egon yuan')  # 返回所有满足条件的结果放在列表中
print(ret)
>>>
['eva', 'egon', 'yuan']


#search
ret = re.search('[a-z]+', 'eva egon yuan') # 从前往后找到一个就返回,返回一个对象
print(ret.group())
>>>
eva

#match 从头开始匹配,如果正则规则从头开始可以匹配上,就返回一个变量
# 匹配的内容需要用group才能显示
# 如果没匹配上,就返回None,调用group会报错
ret = re.match('ev', 'eva egon yuan')
print(ret.group())
>>>
ev

#split 分割,分组优先
ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd', 再对''和'bcd'分别按'b'分割
print(ret)
>>>
['', '', 'cd']

# 替换
ret = re.sub('\d', 'H', 'fdksjfids5f4sf654ds5f')
print(ret)
>>>
fdksjfidsHfHsfHHHdsHf


# subn替换并返回替换了几次
ret = re.subn('\d', 'H', 'fdksjfids5f4sf654ds5f')
print(ret)
>>>
('fdksjfidsHfHsfHHHdsHf', 6)


#compile建一个正则表达式编译成为一个对象,反复用的时候
obj = re.compile('\d{3}')
ret = obj.search('abc123eeee')
print(ret.group())
>>>
123


# finditer 返回一个存放匹配结果的迭代器
ret = re.finditer('\d', 'ds3ssy4784a') # finditer 返回一个存放匹配结果的迭代器
print(ret)
print(next(ret).group()) #查看第一个结果
print(next(ret).group()) #查看第二个结果
print([i.group() for i in ret])
>>>
<callable_iterator object at 0x000001DFB917C390>
3
4
['7', '8', '4']

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值