正则表达式之Python简述

re 模块的一般使用步骤如下

string = "字符串"
pattern = r'正则表达式'
result = re.findall(pattern, string, re.S)

re.M:多行匹配
re.I:忽略大小写
re.S:匹配包括换行符在内的任意字符
re.split(pattern,string)
re.sub(pattern, replace, string, count=0, flags=0):
(1)pattern:表示正则中的模式字符串;
(2)replace:表示要替换成的字符串,也可以是个函数;
(3)string:表示要被处理(查找替换)的原始字符串;
(4)count:可选参数,表示是要替换的最大次数,而且必须是非负整数,该参数默认为0,即所有的匹配都会被替换;
(5)flags:可选参数,表示编译时用的匹配模式(如忽略大小写、多行模式等),数字形式,默认为0。

re.findall(pattern,string):扫描整个字符串,以字符串列表形式返回所有的匹配值。
re.search(pattern,string):扫描整个字符串,只返回第一个匹配到的结果,如果匹配上,则返回一个Match对象,且不再往后面匹配;否则,返回None。
re.match(pattern,string):从头开始查找,如果开头匹配上,则返回一个Match对象;如果开头匹配不上,则返回None。

group():Matcher类中group方法,与search()、match()搭配使用。
x = '123ra9040 123123aj234 adf12322ad 222jsk22'
z = re.match('(\d+)([a-z]+)(\d+)', x)
print(z.group())
print(z.group(0))
print(z.group(1))
print(z.group(2))
print(z.group(3))

标识符

PS:学习正则可以配合 正则表达式在线测试工具 练习
.:匹配除换行符以外的任意单一字符
[ ]:匹配方括号中的任意单一字符——> [abc]可以匹配该位置的 a 或 b 或 c
( ):匹配括号中的固定字符,下面的捕获与非捕获分组有说明
^:以符号后的字符开头——> ^a...s$
$:以符号前的字符结尾——> ^a...s$
|:匹配符号前或符号后的字符,一般与()配合使用——> (?:供应商|服务商)名[单称]为?
\:转义字符
-:在[]内表示字符范围——> [0-9a-z]

\d:匹配任意数字字符
\D:匹配任意非数字字符
\s:匹配任意空白字符
\S:匹配任意非空白字符
\w:匹配任意数字、字母和下划线字符
\W:匹配任意非数字、非字母或非下划线字符

贪婪匹配:尽可能多地匹配

——?:符号前面的字符出现0次或1次
——*:符号前面的字符出现0次或多次
——+:符号前面的字符出现1次或多次
——{m}:括号前面的字符正好出现m次
——{m,}:括号前面的字符至少连续出现m次
——{m,n}:括号前面的字符至少重复出现m次,最多重复出现n次 

非贪婪匹配:尽可能少地匹配

 ——??
——*?
——+?
——{}?

捕获分组:(此时只返回分组的匹配结果)

——(exp):

非捕获分组:(不会返回分组的匹配结果,作用相当于定位)

 ——(?:exp):
——exp1(?=exp2):查找后面是 exp2 的 exp1——
    如runoob(?=[\d+]),123456runoob123runoob456
——(?<=exp2)exp1:查找前面是 exp2 的 exp1——
    如(?<=[0-9]+)runoob,123456google123runoob456
——exp1(?!exp2):查找后面不是 exp2 的 exp1——
    如runoob(?![0-9]+),123456runoob-google123runoob456
——(?<!exp2)exp1:查找前面不是 exp2 的 exp1——
    如(?<![0-9]+)runoob,123456runoob-googlerunoob456

随笔

[^0-9]:匹配除了数字以外的字符
[中标候选人供应商]{3}:可以匹配到如候选人、供应商等三个字符
“[ ]” 内需要进行转义的字符分别有: ^ - [ ] \

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值