常用模块之re

正则表达式

1.什么是正则表达式

正则表达式是指用一连窜的特殊字符来表示常用的符号,用来筛选和匹配想要的内容

2.正则表达式的具体内容

在这里插入图片描述
注:
1.在括号内用:?可以将查询到非括号中内容也显示出来
2.括号即表示一个组,也表示只显示内容

3.正则表达式的具体运用

# 匹配所有的字符字母下划线
print(re.findall('\w','asdas123_sd.dsad13_dsa'))
# ['a', 's', 'd', 'a', 's', '1', '2', '3', '_', 's', 'd', 'd', 's', 'a', 'd', '1', '3', '_', 'd', 's', 'a']
# 匹配所有的非字母字符下划线
print(re.findall('\W','asdasdasdaagqg1``.,/'))
# ['`', '`', '.', ',', '/']
# 匹配所有的数字
print(re.findall('\d','231231sdasdjajd'))
# ['2', '3', '1', '2', '3', '1']
# 匹配所有的非数字
print(re.findall('\D','123123ASDASDA'))
# ['A', 'S', 'D', 'A', 'S', 'D', 'A']
# 匹配所有的空白符
print(re.findall('\s','\tadsa\n\t'))
# ['\t', '\n', '\t']
# 匹配所有的非空白符
print(re.findall('\S','\t\n123asda_./,'))
# ['1', '2', '3', 'a', 's', 'd', 'a', '_', '.', '/', ',']
# ^匹配以什么开头,放在开始位置
print(re.findall('^hell.*?d','hello woraddddd'))
# ['hello worad']
# $匹配以什么结尾,放在结束位置
print(re.findall('ba$','asdasdsdsba'))
# ['ba']
# .可以匹配任何一个字符
print(re.findall('.','as_1/.,;'))
# ['a', 's', '_', '1', '/', '.', ',', ';']
# []表示匹配括号中的任何一个字符
print(re.findall('[0-9a-zA-Z]','as0123ADAdadas_.,/'))
# ['a', 's', '0', '1', '2', '3', 'A', 'D', 'A', 'd', 'a', 'd', 'a', 's']
# [^]表示取反
print(re.findall('[^0-9a-zA-Z]','as0123ADAdadas_.,/'))
# ['_', '.', ',', '/']
# * 左边的值出现零次到无穷次数
print(re.findall('ab*','aababbabbbabbbbbbb'))
# ['a','ab', 'abb', 'abbb', 'abbbbbbb']
# + 左边的值出现一次到无穷次数
print(re.findall('ab+','aababbabbbabbbbbbb'))
# ['ab', 'abb', 'abbb', 'abbbbbbb']
# ? 左边的值出现0,1次
print(re.findall('ab?','aababbbabbbabbbbb'))
# ['a', 'ab', 'ab', 'ab', 'ab']
# {n,m},左边的字符出现n-m次
print(re.findall('ab{0,2}','ababbabbabbbb'))
# ['ab', 'abb', 'abb', 'abb']
# .*搭配使用,贪婪模式,匹配任意的字符零到无数次,如果没有加首尾则查询无意义
print(re.findall('a.*b','asdasdasff2134\t\n/123.1,144',re.S ))
# 匹配规则a.*贪婪模式,会尽可能匹配多的字符,但要保证有一个b给*后的b匹配,因此如果有多个b的话只用最后一个有b留给b即可
#['asdasdasff213\t\n/123.1,144']
# .*?非贪婪模式,问号至多遇到一次末尾的值就结束,但末尾必须要有
print(re.findall('a.*?b','ab'))
# .*?非贪婪模式会在尽可能多的匹配字符的基础上当遇到的值能被后面的正则内容匹配到时,就交给后面的内容
# |表示或 匹配拥有两边任意的都可以
print(re.findall('abc(?:D|d)','abcdeabcD'))
# () 直接拿到括号中的内容
print(re.findall('\w+(mysql)','acbmmmmmmysql'))
# ['mysql']
# ?:表示取消括号
print(re.findall('\w+(?:mysql)','abcmmmmysql'))
# \ 表示转义字符,例如\\表示\
print(re.findall('\\\.','\.'))
['\\.']

4.正则表达式提供的模块使用方法

import re
re.split(替换符(使用正则规则),替换对象,字符串,替换次数) 分割,可以指定传入的参数,
re.search() 会将第一次匹配到的对象返回
re.match() 会从字符串开头匹配,如果有则返回,如果不是则返回None,可以用re.search()+^代替
re.findall() 将所有匹配到的对象返回
import re
# re.findall() # 找到所有满足的结果然后返回
# re.match() # 从开头开始查询,如有满足则返回,如果不满足则返回None
# re.search() # 返回一次查询到的内容
# re.sub() # 将字符串的内容替换掉,可以添加参数n指定次数,如果没有指定则替换所有

sb = re.match('\d\w+','1qdqwdqwdqw')
print(sb.group())
# 1qdqwdqwdqw
# group()返回查询到的值,没有返回NONE

sb1 = re.search('\d\w+','1211d12d1ddqwdq')
# 1211d12d1ddqwdq
print(sb1.group())

sc = re.split('[:+-]','a+b:c-d')
# 按照指定的内容进行分割
print(sc)

sd = re.sub('a','A','a abc abcd',1)
# 如果不指定参数则默认替换所有
print(sd)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值