python正则表达式

正则表达式

      正则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。python中使用Re模块操作正则表达式。

正则表达式的常用操作(1)

操作符说明实例
.表示任何单个字符 
[ ]字符集,对单个字符给出取值范围[abc]  表示a、b、c,[a-z]表示a到z单个字符
[^ ]非字符集,对单个字符给出排除范围[^abc]  表示非a非b非c的单个字符
*前一个字符0次或者无限次扩展abc*  表示ab、abc、abcc、abccc等
+前一个字符1次或者无限次扩展abc+  表示abc、abcc、abccc等
前一个字符0次或者1次扩展abc?  表示ab、abc
|左右表达式任意一个abc|def  表示abc、def

正则表达式的常用操作符(2)

操作符说明实例
{m}扩展前一个字符m次ab{2}c表示abbc
{m,n}扩展前一个字符m至n次()包含nab{1,2}c表示abc、abbc
^匹配字符串开头^abc表示abc且在一个字符串的开头
$匹配字符串结尾abc$表示abc且在一个字符串的结尾
( )分组标记,内部只能使用|操作符(abc)表示abc,(abc|def)表示abc、def
\d数字,等价于[0-9] 
\w单个字符,等价[A-Z a-z 0-9 _ ] 

Re库主要功能函数

函数说明
re.search()在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match()在一个字符串的开始位置匹配正则表达式,返回match对象
re.findall()搜索字符串,以列表类型返回全部能匹配的子串
re.split()将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
re.finditer()搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub()在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。 多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
 

修饰符 描述
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

1、创建模式对象

不匹配的

import re
#1创建模式对象

pat = re.compile("AA")   #此处的AA,是正则表达式,用来去验证其他的字符串
m = pat.search("CBA")    #search后面的字符串是被校验的内容

print(m)

一个匹配的

import re
#1创建模式对象

pat = re.compile("AA")   #此处的AA,是正则表达式,用来去验证其他的字符串
m = pat.search("ABCAAA")  #<_sre.SRE_Match object; span=(3, 5), match='AA'>   左闭右开区间

print(m)

多个匹配的

import re
#1创建模式对象

pat = re.compile("AA")   #此处的AA,是正则表达式,用来去验证其他的字符串
m = pat.search("ABCAAACCAAAA") #<_sre.SRE_Match object; span=(3, 5), match='AA'>   进行比对查找,第一次出现的AA

print(m)

进行比对查找,第一次出现的AA
2、没有模式对象

re.search()

m = re.search("asd","Aasd")   #前面的字符串是规则(模版),后面的字符串是被校验的对象

print(m)

re.findall()  前面字符串是规则,后面是被校验的

print(re.findall("a","ASDaDFsa"))   #前面字符串是规则,后面是被校验的。['a', 'a']

print(re.findall("[A-Z]","ABCDabcdZ"))   #['A', 'B', 'C', 'D', 'Z']

print(re.findall("[A-Z]+","ABCabcdSCZcvSD"))  #['ABC', 'SCZ', 'SD']

 

sub

print(re.sub("a","A","abcdcasdf"))    #用A来替换a.在第三个字符串中查找

#建议在正则表达式中,在被比较的字符串前面加上r。r是防止转义字符生效,不用担心转义字符的问题
a = r"\aaacv'\'"
print(a)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值