正则表达式

正则表达式

正则表达式(Regular Expression)是一种文本模式,使用普通字符和特殊字符定义一个特殊的字符串来描述和匹配符合某个语法规则的字符串。正则表达式入门稍微难点,但是学会之后真的会提高效率,而且有满满的装逼感。

常用语法

下表的字符用来描述字符串或者单词的边界

字符描述
^匹配输入字行首
$匹配输入行尾
\b匹配一个单词边界,即字与空格间的位置
\B非单词边界匹配
()标记一个子表达式的开始和结束位置

使用方括号来指定多个字符区间

字符描述
[a-z]匹配小写英文字母a-z
[^a-z]匹配任何不在a-z内的任意字符
[A-Z]匹配大写英文A-Z
[0-9]匹配数字0-9
[xyz]匹配所包含的任意一个字符
[^xyz]匹配非xyz的任意字符
$xy$

下表里面的字符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配

字符描述
.匹配除换行符 \n 之外的任何单字符
*匹配前面的子表达式零次或多次
+匹配前面的子表达式一次或多次
?匹配前面的子表达式一次或零次
{n}n 是一个非负整数,匹配确定的n次
n,}n 是一个非负整数,匹配至少n次
{n,m}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次

下表列出转义字符,也是正则表达式中的组成部分

字符描述
\d匹配一个数字字符
\D匹配一个非数字字符
\s匹配任何空白字符
\S匹配任何非空白字符
\w匹配字母、数字、下划线
\W匹配非字母、数字、下划线
\n匹配一个换行符
\r匹配一个回车符

但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用非捕获元(?:, ?=, ?!)放在第一个选项前来消除这种副作用

字符描述
exp1(?=exp2)查找exp2前面的exp1
(?<=exp2)exp1查找exp2后面的exp1
exp1(?!exp2)查找后面不是exp2的exp1
(?<!=exp2)exp1查找前面不是exp2的exp1

常用正则表达式

字符描述
汉字(字符)[\u4e00-\u9fa5]
匹配由26个英文字母组成的字符串1+$
网址(URL)[a-zA-z]+://[^\s]*
时间(小时:分钟, 24小时制)$((1
日期格式(yyyy-mm-dd)^\d{4}-\d{1,2}-\d{1,2}
至少8个字符,至少1个大写字母,1个小写字母和1个数字,不能包含特殊字符(非数字字母)^(?=.[A-Za-z])(?=.\d)[A-Za-z\d]{8,}$

python re库

python中的库文件re中定义了正则表达式常用函数。

  • re.compile(pattern[, flags])函数用于编译正则表达式,生成一个正则表达式对象,供 match() 和 search() 这两个函数使用

  • re.match(pattern, string, flags=0)从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,则返回None

  • re.search(pattern, string, flags=0)扫描整个字符串并返回第一个成功的子串

re.match和re.search的区别在于:re.match从字符串的起始开始匹配,发现字符不符合正则表达式时,匹配失败,返回None;而re.search则匹配整个字符串,直到字符串的末尾

  • re.sub(pattern, rep1, string, count=0, flags=0)用于替换字符串中的匹配项

  • re.finditer(pattern, string, flags=0)在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回

  • re.split(pattern, string[, maxsplit=0, flags=0])按照能够匹配的子串将字符串分割后返回列表

在这里插入图片描述


  1. A-Za-z ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

马鹤宁

谢谢

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

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

打赏作者

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

抵扣说明:

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

余额充值