正则表达式:re模块

re是python中的正则表达式模块,正则也是每个人编程之路上必备的基础技能。这博客希望即便从来没接触过的人看了也会使用正则表达式

特殊符号及用法

字符含义
.匹配除了换行符外的任何字符。(可以用re.DOTALL来设置匹配任何字符,包括换行符)
A丨B ,表示正则表达式匹配A或者B
^匹配输入字符串开始的位置,如果设置了re.MULTILINE标志,也可以匹配换行符后的位置
$匹配输入字符串结束的位置,如果设置了re.MULTILINE标志,也可以匹配换行符前的位置
|将一个普通字符变成特殊字符
*匹配前面的子表达式0次或者多次
+匹配前面的子表达式1次或者多次
匹配前面的子表达式1次或者0次
[]匹配所包含的任意一个字符
\A匹配输入字符串的开始位置
\Z匹配输入字符串的结束位置
\b匹配一个单词边界
\B匹配一个非单词边界,正好与\b相反
\d匹配数字[0-9]
\D与\d相反匹配所有非[0-9]的数字
\s或者\S前者匹配空白字符,后者匹配非空白字符
\w或者\W前者匹配单词字符与数字,下划线等价于[A-Za-z0-9],后者与其相反

re中的常用方法

re.findall()

从字符串中匹配出相应的字符序列,返回值是list,元素是匹配到的每个字符序列。

import re
#从一个字符串中匹配出所有的数字
str = 'aaqtas123nvj654yyyajkv'
result1 = re.findall('\d+',str)
print(result1)

输出:['123', '654']

findall()还有第三个参数可以使用,并且这第三个参数使用“|”分开使其多个一起生效。

str2 = 'AATGJYO123LIAA'
result2 = re.findall('aa',str2)
print(result2)

输出:[]
str2 = 'AATGJYO123LIAA'
result2 = re.findall('aa',str2,re.I)
print(result2)

输出:['AA', 'AA']

从上面的例子中我们可以看到当没加re.I的时候因为str中的AA是大写的,但是匹配规则是小写的aa,从而导致无法匹配成功,但是我们把标志位re.I加上就匹配出来了,说明该标志位可以无视大小写匹配

re中的标志位还有很多哦,这里直接列个表好了。
标志位含义
re.I匹配时候无视大小写
re.S使‘.’可以匹配出包括换行符在内的内容
re.M可以进行多行匹配,就是前面特殊字符中第三四个里面说的re.MULTILINE
re.L使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
re.U使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
re.U详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。
str3 = 'qWD\nad'
result3 = re.findall('wd.',str3)
print(result3)

输出:[]
str3 = 'qWD\nad'
result3 = re.findall('wd.',str3,re.I)
print(result3)

输出:[]
str3 = 'qWD\nad'
result3 = re.findall('wd.',str3,re.I|re.S)
print(result3)

输出:['WD\n']

从上面的例子我们可以看到,第二个我加上了无视大小写也输出了空,是因为后面\n被视为换行符,所以’ . '没有匹配到东西,无法输出,加上之后无视了大小写并且将\n输出了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值