首页 / PYTHON / python-re模块基础学习
python-re模块基础学习
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-re模块基础学习,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5049字,纯文字阅读大概需要8分钟。
内容图文
![python-re模块基础学习](/upload/InfoBanner/zyjiaocheng/635/066ad97afa774af6805aab02d24d7b8b.jpg)
import re
import json
# 第一种方法(很普遍的写法吧)
iphones = []
# with open('name.txt', 'r', encoding='utf-8')as f:
# for i in f.readlines():
# name, city, height, weight, iphone = i.split()
# if iphone.startswith('1') and len(iphone) == 11:
# iphones.append(iphone)
# print(iphones)
# 第二种方法(我只用了一行代码搞定)
f = open('name.txt', 'r', encoding='utf-8')
str_name = f.read()
f.close()
"""
re模块中匹配的语法
re.match 从头开始匹配 (只匹配开头的字符)
re.search 匹配包含(全局匹配,但只匹配到一个)
re.findall 把所有匹配到的字符放到以列表中的元素返回(全局匹配,匹配到所有的返回)
re.split 以匹配到的字符当做列表分隔符(全局匹配,用匹配到的字符做分隔符)
re.sub 匹配字符并替换
re.fullmatch 全部匹配
"""
# re.match
a = '135adasdasdsad123'
# print(re.match('[0-9]{3}', a)) # 定义一个匹配规则,要寻找的字符串,但只匹配开头
b = '1adasdasdsad123,13'
# re.search
# print(re.search('[0-9]{2}',b)) # 12 定义一个匹配规则,要寻找的字符串,全局匹配但是找到一个就返回后面的不再查找匹配
# re.findall
c = '12adasdasdsad123,13'
# print(re.findall('[0-9]{2}', c)) # ['12', '12', '13']定义一个匹配规则,要寻找的字符串,全局匹配将所有满足规则的放在一个列表中并返回
d = '12adasdasdsad123,13'
# print(re.split(',', d)) # ['12adasdasdsad123', '13']
# print(re.split('[0-9]{2}', d)) # ['', 'adasdasdsad', '3,', '']
# 再看下字符串的split分割
# print(d.split(',')) # ['12adasdasdsad123', '13'] 按照精准的字符进行分割两个效果是一样的
# print(d.split('12')) # ['', 'adasdasdsad', '3,13'] 但是re.split可以写规则啊,字符串的split只能准确的字符
# re.sub
e = '12adasdasdsad123,13'
# print(re.sub('12','33',e))#33adasdasdsad333,13
# print(re.sub('ad','你好啊,我不好',e,count=1)) # 只替换一次,默认是替换全部
# re.fullmatch
f = '12'
# print(re.fullmatch('12',f)) # 匹配的字符与字符串完全一致才可以
"""
. 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
^ 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上
$ 匹配字符结尾, 若指定flags MULTILINE
* 匹配*号前的字符0次或多次,
+ 匹配前一个字符1次或多次,
? 匹配前一个字符1次或0次
{m} 匹配前一个字符m次
{m}{n} 匹配前一个字符最少m次,最多n次
| 匹配|左或|右的字符
(...) 分组匹配
'\A' 只从字符开头开始匹配 ,re.search("\Aabc","alexabc") 是匹配不到的,相当于re.match('abc',"alexabc") 或^
'\Z' 匹配字符结尾,同$
'\d' 匹配数字0-9
'\D' 匹配非数字
'\w' 匹配[A-Za-z0-9]
'\W' 匹配非[A-Za-z0-9]
's' 匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'
'(?P...)' 分组匹配 re.search("(?P[0-9]{4})(?P[0-9]{2})(?P[0-9]{4}
"""
# .
# print(re.search('.','abc')) # <re.Match object; span=(0, 1), match='a'>
# print(re.search('.','abc').group()) # a
# print(re.search('.','\nabc')) # <re.Match object; span=(1, 2), match='a'>
# ^
# print(re.search('^ab','abc')) # <re.Match object; span=(0, 2), match='ab'>
# print(re.search('^ab','caaaabbbb')) #None 和re.match的作用是差不多的
# print(re.search('^[0-9]{2}[a-z]{1}','12c1d')) # <re.Match object; span=(0, 3), match='12c'> 0-9数字+0-9数字+a-z字母
# $
# print(re.search('45$','123456')) # None
# print(re.search('45$','12345645'))
# ^ $
# print(re.search('^456$','456')) #<re.Match object; span=(0, 3), match='456'> 以什么开头以什么结尾的
# print(re.search('^[0-9][a-z]$','1a')) #<re.Match object; span=(0, 2), match='1a'>
# print(re.search('^[0-9][a-z]$','1aaa')) #None
# *
# print(re.search('a*','aaa')) #<re.Match object; span=(0, 3), match='aaa'>
# print(re.search('[a-z]*[0-9]*','aaa45')) #<re.Match object; span=(0, 5), match='aaa45'> a-z出现多次,0-9出现多次
# +
# print(re.search('a+', 'aaa')) # <re.Match object; span=(0, 3), match='aaa'>
# print(re.search('a+', 'bbb')) # None
# ?
# print(re.search('a?', 'aaa')) # <re.Match object; span=(0, 1), match='a'>
# print(re.search('a?', 'bbb')) # <re.Match object; span=(0, 0), match=''>
# {m,n}
# print(re.search('a{3,5}', 'aaaaaaaa')) # <re.Match object; span=(0, 5), match='aaaaa'>
# print(re.search('a{3,5}', 'aaaabaaaa')) # <re.Match object; span=(0, 4), match='aaaa'>
# print(re.search('a{3,5}', 'aaabaaa')) # <re.Match object; span=(0, 3), match='aaa'>
# print(re.search('a{3,5}', 'aabaa')) # None
#|
# print(re.search('[0-9]|[a-z]','aaaa')) #<re.Match object; span=(0, 1), match='a'>
# print(re.search('[0-9]|[a-z]','1111')) #<re.Match object; span=(0, 1), match='1'>
# print(re.search('[0-9]|[a-z]','AAA')) #None
#()()()
print(re.search('([0-9])([a-z])','1aabbccdd11223344'))#<re.Match object; span=(0, 2), match='1a'>
s = '11022219900816XXXX'
ses = re.search('(?P<city>[0-9]{3})(?P<shiqu>[0-9]{3})(?P<year>[0-9]{4})(?P<month>[0-9]{2})(?P<day>[0-9]{2})',s)
print(ses.groupdict())
# print(re.findall('[0-9]{11}', str_name)) # findall是匹配到所有符合条件的,匹配的是数字,而且出现11位的数字,以列表形式返回
# '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
# a = re.search('.', '\n@aa') # <re.Match object; span=(0, 1), match='@'>
# b = re.match('.', '\n@aa') # None 从开头查找符合条件的返回,因为\n不符合所以返回none
# print(a)
# print(b)
内容总结
以上是互联网集市为您收集整理的python-re模块基础学习全部内容,希望文章能够帮你解决python-re模块基础学习所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。