re 模块与正则表达式
目录
re 模块正则表达式与re模块的关系1:正则表达式是一门独立的技术。 2:正则在任何语言中均可以使用。 3:python中要想使用正则表达式需要通过re模块。 正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
有无正则校验的区别 # 纯python代码校验 while True: phone_number = input('请输入你的手机号码>>>:').strip() if len(phone_number) == 11 and phone_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('手机号码格式不正确') # 正则表达式校验 import re phone_number = input('请输入你的手机号码>>>:').strip() if re.match('^(13|14|15|16|17|18)[0-9]{9}$',phone_number): print('手机号码格式正确') else: print('手机号码格式不正确') 正则表达式在线测试 仅仅是测试正则表达式:http://tool.chinaz.com/regex/ 正则表达式应用场景:爬虫,数据分析 正则表达式符号:
一个字符串里面的表达式都是域的关系
两者中间写什么,匹配的字符串就必须是什么,多一个不行少一个也别想,会精准限制配置的内容。
用 | 的时候一定要将长的放前面。
^直接写在外面,限制字符串的开头,[^]取反。
当多个正则符号需要重复多次的时候或者当作一个整体进行其他操作,那么就可以用分组的形式。 了解:
量词:
注意: 1:正则在匹配的时候默认都是贪婪匹配(尽量匹配多的)。可以通过符号 ? 就可以将贪婪匹配变成非贪婪匹配(惰性匹配)。 2:量词必须跟在正则符号的后面。 3:量词只能够限制紧挨着它的那一个正则符号。 re 模块的基本使用正则表达式是用来匹配处理字符串的,python中使用正则表达式需要引入 re 模块
import re res = re.findall('a','apple apple apple') # 返回所有满足匹配条件的结果,放在列表里。 print(res) # ['a','a','a']
import re res = re.search('a','Apple apple apple') # 函数会在字符串中查找匹配,找到第一个匹配和返回一个包含匹配信息的对象。 print(res) print(res.group()) # 如调用 group 可以取出返回的对象,如果返回的是None就会直接报错 if res: # 当返回值为 None 时,就不会执行 group,不会报错 print(ret.group()) # <_sre.SRE_Match object; span=(5,6),match='a'> # a
import re res = re.match('a','apple apple apple') print(res) print(res.group()) # match是从头开始匹配,如果正则规则从头开始可以匹配上,就返回一个对象,需要用group才能显示,如果没匹配上就返回None,调用group()就会报错 # <_sre.SRE_Match object; span=(0,1),match='a'> # a 其他方法
import re res = re.split('[ab]','abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割 print(res) # ['','','cd']
import re res = re.sub('d','A','apple1apple2apple3') # 将字符串中的数字替换成'A' res1 = re.sub('d','apple1apple2apple3',1) # 参数1表示替换1个 print(res) print(res1) # appleAappleAappleA # appleAapple2apple3
import re res = re.subn('d','apple1apple2apple3') # 将数字替换成'A'后,返回元组(替换结果,替换个数) print(res) # ('appleAappleAappleA',3)
import re obj = re.compile('d{3}') # 将正则表达式编译成一个正则表达式对象,规定要匹配的是3个数字 res = obj.search('app111app') # 正则表达式对象调用 search,参数为待匹配的字符串 print(res.group()) # 111
import re res = re.finditer('d','1apple2apple3456') # finditer 返回一个存放匹配结果的迭代器 print(res) print(next(res).group()) # 查看第一个结果 print(next(res).group()) # 查看第二个结果 print([i.group() for i in res]) # 查看剩余的结果 # <callable_iterator object at 0x00000070AA9CC438> # 1 # 2 # ['3','4','5','6'] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |