Python从入门到精通---------正则表达式

"本文详细介绍了正则表达式的基本概念、作用及规则。正则表达式用于验证用户输入和从大量文本中提取特定内容。规则包括字符组、简化匹配、元字符和量词。字符组如[0-9]匹配数字,元字符如d匹配任意数字,量词如*表示匹配0次或多次。此外,还讨论了贪婪匹配和非贪婪匹配的概念。通过学习,读者可以掌握正则表达式的强大功能。"

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是正则表达式 

     正则表达式是一套匹配字符窜的表达式

2.正则表达式的作用 

      2.1.检查有关输入的字符窜是否合法 用户输入一个内容的时,

      我们要提前做检测 能提供程序的效率并且减轻服务

       2.2.从一个大文件中找到所有符号规范的内容

      能够高效的从一大段文字中快速找到符合规则的内容

在介绍正则表达式的匹配规则之前我会先给大家一个网站

大家可以在这个网站上去查看表达式是否匹配 http://tool.chinaz.com/regex/

3.正则表达式的规则 

3.1

字符照顾[]  (可能在下面出现的一个字符组的可能)
一个字符组只表示一个字符上的内容
[adc] 一个括号只表示一个字符的位置
匹配到a或b或c
[0-9]根据ascii码的进行范围对比
匹配到1或2或3或4,一直到9的个位数
[a-z]匹配到a或b或c或d一直到z的所有小写字母
[A-Z]和上面一样
[a-zA-Z]所有大小写数字
[0-9a-z]所有个位数和小写字母
[0-9a-zA-Z]所有个位数和小写字母和大写字母
匹配多位数
[0-9][0-9]就可以匹配到多个数了

3.2匹配规则的简化

\d -->   匹配任意一位的数字---->[0-9]
\w -->   匹配任一的个位数和小写字母和大写字母------>[0-9a-zA-Z]
匹配(空格/tab/enter)用--->(空格|\t|\n)
也可以所有\s来匹配所有的空白

3.3元字符

元字符
[]   表示写在[]里面的都可以匹配
\d  匹配任意一位的数字
\w  匹配任一数字,字母,下划线     
\W 匹配所有非(数字,字母,下划线)。
\D 匹配所有非数字的
\S  非空白符
\b  -->匹配一个单词的结尾(如 x\b 就会匹配到字符结尾的x)

[\d\D] ,[\w\W],[\S\s] 表示匹配所有 

.  -->表示匹配除换行符意外的所有

[^]-->匹配非字符组合

[^\d]-->匹配所有非数字

^ -->匹配一个字符组的开始  (永远只出现在字符串的开始)

$-->匹配一个字符串的结尾    (永远只出现在字符串的结束)

a表达式|b表达式  --> 匹配a或者b的内容 ,如果匹配a成功则b不会成功,
                    所以在匹配时优先将长的表达式放在前面

 \ 表示取消特殊的原因  如\.表示匹配 . 了
 () 可以约束字符的范围

3.4量词

量词只约束前面的一个元字符
'''
{n} 表示匹配n次
{n,} 表示匹配至少n次
{n,m} 表示至少匹配n次,至多匹配m次
? 表示匹配0次或1次
+ 表示匹配1次或多次
* 表示匹配0次或多次

如何理解量词
0-1--------------->无穷大
(数轴)
    可以将0-1想成 ?
    可以将1-(无穷大)想成 +
    可以将0-(无穷大)想成 *

4.贪婪匹配和非贪婪匹配

4.1贪婪匹配

在量词范围运行的情况下尽量多次的匹配内容 
\d{3,9} 会匹配9次
在贪婪匹配之后会使用回溯算法
回溯算法
    在从左到右算完了后,在从右到左来寻找让他停止的值
如在输入\d{3,}6 后发现不管你输入多少个6后都值会在最后一个6上
停止
常用方法: .*?x  表示匹配任意字符,任意多次,遇到'最后一个'x就停止

4.2非贪婪匹配

在量词运行的情况下尽量少的匹配
方法在量词后面加  ?
如 \d{3,}?6 后就只会到将第一个6前面的数算入匹配内容了
常用方法: .*?x  表示匹配任意字符,任意多次,遇到x就停止

5.转义符

在原本有特殊意义的字符,到了表达它本身的意义的时候,就需要转义了
        将需要转义的字符放在[]里面就可以了
        或者在字符前面加上 \
        如:\.就会匹配.了

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值