正则表达式(python)

正则表达式(python)

一. 用途

简单来说,正则表达式是用来对字符串做处理的。它定义了字符串的一个“模型”,符合这个模型的字符串将被匹配/筛选

二. 举例

直接上语法规则比较枯燥,先用一个例子来体会一下:

匹配的字符串:“hello world”

正则表达式:“h…llo"

("."表示任意除换行符以外的字符)

匹配结果:“hello”

三. 语法规则

完整介绍:

(图片来源:CSDN)

在这里插入图片描述

残缺版重点:

完整版太长了,总结一下,一般情况常用的几个:

字符类

语法解释模式字符串
.匹配除换行符“\n“以外的字符Hell… .orldHello! World
[…]字符集,相当于一个列表集合,可以代替集合中的任意元素xi[xia]xixixxi/xiixi
\d数字6\d6666
\w单词Str\wngStrong

数量类

语法解释模式字符串
*[0,)23*23333
{m,n}[m , n]一般模式23{2,4}233333/2333/23333

定位符类

语法解释模式字符串
^定位首位(多行定位,每一行开头)^hoho\nho匹配出两个ho
$定位末尾(多行定位,每一行末尾)niu$niuni无法匹配,因为niu不在末尾

分组类

每个正则表达式可以作为一个分组使用‘()’括起来,通过连接词等形式组合在一起,变成更长的正则表达式。

正则表达式允许为该分组命名,并引用之前定义过的分组。

四. python正则表达式使用

python re模块用于处理正则表达式

原生字符串对应python中的pattern

#r代表后面的字符串为正则表达式,用于避免语言和正则表达式之间的反斜杠问题
pattern = re.compile(r'hello') 

拥有pattern后,python将其传入re模块,对正则表达式模式进行处理

re模块提供一下几种方法:

re.match(pattern, string[, flags]) #match是检测传入的string是否符合这个模式,且是从头开始匹配
re.search(pattern, string[, flags])#search是搜索string中符合模式的部分,调用group()返回匹配的列表
re.split(pattern, string[, maxsplit])#模式作为分割符将string进行分割,返回分割后的列表
re.findall(pattern, string[, flags])#搜索string,以列表形式返回全部能匹配的子串
re.finditer(pattern, string[, flags])#搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器
re.sub(pattern, repl, string[, count])#替换匹配到的所有子串为指定内容,并返回整个字符串
re.subn(pattern, repl, string[, count])

常用举例:

Search:

result = re.search(r"\d+", "送你999朵花")  # match默认从开头匹配,search不要求从开头匹配,如果正则表达式中加入^表示从开头匹配,那么search与match相同。
 
if result:
	print(result.group())  # 999  自会匹配第一个 (findall匹配所有,返回列表)
else:
	print("未找到")

findall

result = re.findall(r"\d+", "送你999多花,老铁双击666")  # search只匹配第一个,findall匹配所有(返回列表)

if result:
	print(result)  # ['999', '666'] 
else:
	print("未找到")

spilt

result = re.split(r":| ","1:李华 12 岁")  # 切割,根据冒号:或者空格切割,返回列表
print(result)  # ['1', '李华', '12', '岁']

Sub

# sub替换 替换成固定字符串
result = re.sub(r"996", "早9晚9上6天","现在互联网实行996,甚至007")  # 替换匹配到的所有,并返回整个字符串。

print(result)  # 在互联网实行早9晚9上6天,甚至007
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值