python中re模块有什么用_python中常用模块之re模块以及正则表达式

一,正则表达式:

正则表达式不仅仅用在python中,而是所有语言都可使用。只是调用方法各不相同。

#在python中纯代码校验手机号码:

whileTrue:

phone_number= input(‘please input your phone number :‘)if len(phone_number) == 11andphone_number.isdigit()and (phone_number.startswith(‘13‘)or phone_number.startswith(‘14‘)or phone_number.startswith(‘15‘)or phone_number.startswith(‘16‘)or phone_number.startswith(‘17‘)or phone_number.startswith(‘18‘)):print(‘合法手机号码‘)else:print(‘不是合法手机号码‘)

#在python中调用re模块使用正则表达式校验手机号码:

importre

phone_number= input(‘please input your phone number :‘)if re.match(‘^(13|14|15|16|17|18)[0-9]{9}$‘,phone_number):print(‘是合法手机号码‘)else:print(‘不是合法手机号码‘)

结论:在python中调用re模块使用正则表达式会简便很多。

正则表达式的语法如下:

ef5d53366d9d302b22e4216b98d6a6fa.png

6bd2b9b22a7440d665034107c9231fcb.png

其中量词‘*’,‘+’,‘?’都是贪婪匹配,就是往更多次匹配字符,如果量词后面加了  ‘?’ 这个符号,就表示惰性匹配,换句话说就是尽量往少的匹配。

在匹配实列中的体现如下:

1.  ‘.’ ,‘^’,‘$’  三个的具体表现

562b6013d01600d6caa733c5d89d03db.png

2.‘?’,‘+’,‘*’,‘{}’ 具体表现

99f99d203b6963e0b34af0c2428d9cbb.png

当量词后加上‘?’发生了变化。

73c403a60386ba13415c9aa1dd9f065a.png

3.‘[^]*’ 的用法:

7e1579dfaae34f5ac9334b5659cf9161.png

二,总结几个常用的贪婪匹配的组合

6e19041ccc0986727b6daab6543d07a2.png

三,贪婪匹配和非贪婪匹配

1.<.>:先拿着里面的.*去匹配所有的内容,然后再根据>找到最后一个>为止。

2.<.>:先拿着?后面的>,在字符中碰到第一个>就停止。

re模块的使用:

三个必须掌握的方法有如下

1.findall

import re

res = re.findall(‘c‘,‘andy cody jcason‘) #查找字符串中所有‘c’字符

print(res)#返回所有的满足匹配条件的放在列表里, [‘c‘,‘c‘]

findall 查找所有字符,只要是能匹配到的字符,全部放在一个列表里,不需要调用group方法。

2.search

import re

res = re.search(‘c‘,‘ancdy cody jcason‘)print(res.group()) #用group方法

search 查找所有字符,只要找到第一个匹配到的字符后会停止查找,并返回匹配的字符。

全部字符中如果没有要找的字符,就会返回None,如果用group方法调用就会报错。

3.match

import re

res = re.match(‘c‘,‘cncdy cody jcason‘)

print(res.group()) #‘c’

match 只会找字符中的开头字符是否含有所匹配的字符,有就会返回匹配的字符

如果字符开头不是要找的字符,就会返回None,     如果用group方法调用就会报错

其他涉及到的使用方法:

1.split

ret = re.split(‘[ab]‘, ‘abcd‘) #先按‘a‘分割得到‘‘和‘bcd‘,再对‘‘和‘bcd‘分别按‘b‘分割

print(ret) #[‘‘, ‘‘, ‘cd‘]

2.sub

ret = re.sub(‘\d‘, ‘W‘, ‘3andy4cody4‘, 1) #将数字替换成‘W‘,参数1表示只替换1个

print(ret) #Wandy4cody4

3.subn

ret = re.subn(‘\d‘, ‘W‘, ‘3andy4cody4‘, 1) #将数字替换成‘W‘

print(ret) #WandyWcodyW 返回元组(替换的结果,替换了多少次)

4.compile

obj = re.compile(‘\d{3}‘) #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字

ret = obj.search(‘abc123eeee‘) #正则表达式对象调用search,参数为待匹配的字符串

print(ret.group()) #结果 : 123

原文:https://www.cnblogs.com/wujc3/p/11202353.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值