python中正则表达式的使用

目录

re模块操作

元字符

反义符

转义符 

数量

单词边界和非边界(\b  \B)

分组

re模块高级操作

search

findall

sub

split

贪婪和非贪婪模式


re模块操作

在Python中需要通过正则表达式对字符串进⾏匹配的时候,可以使⽤⼀个re模块,通过group进行分组显示

元字符

字符功能
.匹配任意符号(除换行符外(\n))
\d        匹配数字
\w 匹配所有的有效字符(字母、数字、下划线_、各国语言符号)
\s    匹配空白位 (如:空格、\t)
^  匹配以xx开头
$     匹配以xxx结尾
[]   匹配[]中的任字符,列举  如: [0123456789]      [A-Za-z0-9_]

举例(re.match表示以匹配开头)

1.匹配第一个字符 .

2.匹配第一个数字 \d

如果想匹配后面的数字,可以使用返回对象的group方法来显示

3.匹配第一个有效字符 \w

4.匹配第一个空格 \s

5.匹配以什么结尾  $,“\d.*表示数字开头后面任意位的任意符号”

6.匹配任一字符  []

反义符

字符功能
\D 匹配非数字  
\W 匹配特殊符号,即除了字母,数字,下划线,各国语言符号外
\S匹配非空白位
[^] 匹配列举反义        ^[]和[^]有区别

举例: ^[]和[^]

1.匹配以1开头, ^[]

2.匹配非1开头,[^]

转义符 

\ 用来作转义使用,如匹配邮箱中的"."使用时加转义符否则就表示为正则中的"."(即匹配任意字符)

python中需要两个“\\”来表示一个“\”,正则中也是如此

如:可以在在前面加r(表示只关心正则中的\\)就不用写那多“\\”了

数量

字符功能
*匹配前⼀个字符出现0次或者⽆限次
+匹配前⼀个字符出现1次或者⽆限次
?匹配前⼀个字符出现0次或者1次
{m}匹配前⼀个字符出现m次
{m,}匹配前⼀个字符⾄少出现m次
{m,n}匹配前⼀个字符出现从m到n次

例:  * 和 + 的区别,在于前一个字符出现0次或一次

单词边界和非边界(\b  \B)

例(\b匹配左右要加空格,\B不加):

分组

字符功能
|匹配左右任意⼀个表达式
(ab)将括号中字符作为⼀个分组 
\num 引⽤分组num匹配到的字符串 
(?P<name>)分组起别名
(?P=name)引⽤别名为name分组匹配到的字符串

举例:

1.匹配163或qq邮箱,注意"."的匹配

 2.匹配html标签

3.别名形式

re模块高级操作

如:寻找数字

findall

如:寻找所有数字

sub

如:替换所有数字

split

贪婪和非贪婪模式

python⾥数量词默认是贪婪的(就想一口吃成大胖子),匹配尽可能多的字符;⾮贪婪则相反,匹配尽可能少的字符。

在*、?、+、{m,n}、{n,}后面加上?,将贪婪模式转换为非贪婪模式

例1: *?

例2:??,+?,尽可能少的去匹配

例3:{n,m}?,{n,}?,相当于将前一个数字卡在等于n次

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值