【Python零基础入门篇 · 25】:正则基础、正则的高级用法、贪婪匹配与非贪婪匹配、原生字符串

目录

一、正则基础

1、匹配单个字符

“.”——匹配任意一个字符(除了\n之外)

“[]”——匹配[]中列举的字符

“\d”——匹配数字

“\D”——匹配非数字,即不是数字 

“\s”——匹配空白,即空格和tab键

“\S”——匹配非空白

“\w”——匹配单词字符

“\W”——匹配非单词字符 

2、匹配多个字符

“ * ” ——匹配前一个字符出现0次或无限次

“ + ” ——匹配前一个字符出现一次或无限次

“ ?” ——匹配前一个字符出现一次或0次,即要么有一次,要么没有

“{m}” ——匹配前一个字符出现m次

“{m,n}”——匹配前一个字符出现从m次到n次(m)<>

​3、匹配开头结尾 

“ ^ ” ——匹配字符串开头

“ $ ” ——匹配字符串结尾

4、不匹配

^在[]中表示不匹配

5、总结

6、匹配分组

“ | ”——匹配左右任意一个表达式(从左到右进行匹配)

(ab)——括号中字符作为一个分组

\num——引用分组num匹配到的字符串

(?P)分组起别名

 二、正则的高级用法

search()

findall()——列表形式返回字符串

sub()——数据替换

split()——切割字符串

三、贪婪匹配和非贪婪匹配

四、原生字符串 


一、正则基础

  • 导入模块:import re
  • 使用math方法进行匹配操作

res = re.match(正则表达式,要匹配的字符串)

re.match()从字符串的开始位置进行匹配,配对成功返回match对象。,没有匹配成功返回None

  • 匹配到数据,使用group方法获取数据

print(res.group())

示例:

1、匹配单个字符

  • “.”——匹配任意一个字符(除了\n之外)

  • “[]”——匹配[]中列举的字符

下图报错原因:由于没有匹配到元素,之后又调用了group()方法造成的。

  • “\d”——匹配数字

0,1,2,3,4,5,6,7,8,9

  • “\D”——匹配非数字,即不是数字 

  • “\s”——匹配空白,即空格和tab键

  • “\S”——匹配非空白

  • “\w”——匹配单词字符

a-z,A-Z,0-9,_(下划线),汉字 

  • “\W”——匹配非单词字符 

2、匹配多个字符

  • “ * ” ——匹配前一个字符出现0次或无限次

  • “ + ” ——匹配前一个字符出现一次或无限次

  • “ ?” ——匹配前一个字符出现一次或0次,即要么有一次,要么没有

  • “{m}” ——匹配前一个字符出现m次

  • “{m,n}”——匹配前一个字符出现从m次到n次(m<n)

3、匹配开头结尾 

  • “ ^ ” ——匹配字符串开头

^表示以什么开头,表示对什么取反。

 

^在[]外表示由[]中的各个字符开头就匹配成功

^[ab] :表示以'a'或'b'开头就匹配成功

  • “ $ ” ——匹配字符串结尾

 

 

4、不匹配

  • ^在[]中表示不匹配

5、总结

  • ‘abc’:表示字符串开头有abc就匹配成功
  • '[abc]':表示以字符串开头有'a'或'b'或'c'就匹配成功
  • '^[abc]':表示由'a'或'b'或'c'开头就匹配成功
  • '[^abc]':表示匹配除了'a'、'b'、‘c’之外的字符

6、匹配分组

  • “ | ”——匹配左右任意一个表达式(从左到右进行匹配)

  • (ab)——括号中字符作为一个分组

  • \num——引用分组num匹配到的字符串

  • (?P<name>)分组起别名

(?P=name)引用别名为name分组匹配到的字符串 



 二、正则的高级用法

  • search()

会扫描整个字符串并返回第一个成功的匹配

  • search()和match()的区别:match()从开始位置匹配;search()扫描全部,找到第一个匹配成功的数据。

  • findall()——列表形式返回字符串

以列表形式返回匹配到的字符串 

从头到尾匹配,找到所有匹配成功的数据,返回一个列表。

  • sub()——数据替换

将匹配到的数据进行替换

 语法:sub(正则表达式,新内容,字符串,指定替换的次数)

  • 正则表达式代表需要被替换的,也就是字符串里的旧内容

  • split()——切割字符串

根据匹配进行切割字符串,并返回一个列表 

语法:split(正则表达式,字符串,指定最大分割次数)



三、贪婪匹配和非贪婪匹配

贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配。

非贪婪匹配:在满足匹配时,匹配尽可能短的字符串,使用“ ? ”来表示非贪婪匹配。

  • 在 *,+,{m,n}等后面加上“?”表示使贪婪变为非贪婪



四、原生字符串 

 正则表达式中,匹配字符串中的字符“ \ ”,需要四个反斜杠:\\\\

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

街 三 仔

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值