python正则表达式

正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。

正则表达式的常用操作符

( . ): 表示任何单个字符

( [ ] ):字符集,对单个字符给出取值范围:[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

( {m} ):扩展前一个字符m次:ab{2}c表示abbc

( {m,n} ):扩展前一个字符m至n次(含n):ab{1,2}c表示abc,abbc

( ^ ):匹配字符串开头:^abc表示abc且在一个字符串的开头

( $ ):匹配字符串结尾:abc$表示abc且在一个字符串的结尾

( () ):分组标记,内部只能使用 | 操作符:(abc)表示abc,(abc|def)表示abc,def

( \d ):数字,等价于[ 0-9 ]

( \w):单词字符,等价于[ A-Za-z0-9_]

python

import re

Re库主要功能函数

re.search():在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象

re.match():从一个字符串的开始位置起匹配正则表达式,返回match对象

re.findall():搜索字符串,以列表类型返回全部能匹配的子串

re.split():将一个字符串按照正则表达式匹配结果进行分割,返回列表类型

re.finditer():搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象

re.sub():在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

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

re.l:使匹配对大小写不敏感

re.L:做本地化识别(locale-aware)匹配

re.M:多行匹配,影响^和$

re.S:使 . 匹配包括换行在内的所有字符

re.U:根据Unicode字符集解析字符。这个标志影响\w,\W,\b,\B

re.X:该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解

创建模式对象

pat = re.compile("AA")  # 此处的AA,是正则表达式,用来去验证其他的字符串
m = pat.search("CBAA")  # search字符串被校验的内容
print(m)    # <re.Match object; span=(2, 4), match='AA'> (左闭右开)
m = pat.search("AADASDASVAA")   # search方法,进行比对查找
print(m)    # <re.Match object; span=(0, 2), match='AA'>

没有模式对象

m = re.search("asd", "Aasd")    # 前面的字符串是规则(模板),后面的字符串是被校验的对象
print(m)    # <re.Match object; span=(1, 4), match='asd'>

print(re.findall("a", "ASDaDFGAa"))     # 前面字符串是规则(正则表达式),后面字符串是被校验的字符串

print(re.findall("[A-Z]", "ASDaDFGAa"))     # ['A', 'S', 'D', 'D', 'F', 'G', 'A'] 单个字符

print(re.findall("[A-Z]+", "ASDaDFGAa"))    # ['ASD', 'DFGA']   字符组合

sub

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

建议在正则表达式中,被比较的字符串前面加上r,不用担心转义字符的问题

a = r"\aabd-\'"
print(a)	# \aabd-\'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值