半小时学会正则-半小时没学会的我请你看头号玩家

本文详细介绍正则表达式的各种匹配规则,包括单个字符、多个字符和边界匹配等,并通过Python示例代码进行演示。此外,还介绍了如何利用分组进行更复杂的匹配操作。

Demo采用python演示,如果不熟悉语法看看热闹就行,不影响你对正则的理解


一.单个字符匹配

字符
匹配
.匹配任意字符(除\n)

[...]

匹配字符集
\s/\S匹配空白/非空白字符
\d/\D匹配数字/非数字
\w/\W匹配单词字符[a-zA-Z0-9]/非单词字符

Demo:

采用 . 可以匹配任意字符,a-z,A-Z,0-9


分组可以表达一个满足一个组内的内容即可,后面3个同理


二.多个字符匹配

字符
匹配
*匹配前一个字符0次到无限次
+匹配前一个字符1次到无限次
?匹配前一个字符0次或者1次
{m}/{m,n}匹配前一个字符m次到n次
*? /+? /??匹配模式变为非贪婪(尽可能少匹配字符)

Demo:


匹配a-z出现0到无限次,顺带理解下非贪婪,非贪婪就是尽可能少匹配,例如a-z出现1到无限次,采用非贪婪,就匹配出1个

匹配a-z出现6次,可以,但是出现7次,因为不够7个所以匹配不出来


改为匹配0到7次,可以匹配

三.边界匹配

字符
匹配
^匹配字符串开头
$匹配字符串结尾
\A / \Z指定的字符串必须出现在开头/结尾

Demo:


可以看到是以0-9为开头重复0-10次,以@qq.com为结尾,可以用于匹配邮箱是否合法

强制以111为开头,可写成\A111

四.分组匹配

字符
匹配
|匹配左右任意一个表达式
(ab)括号中表达式作为一个分组
\<number>引用编号为number的分组匹配到的字符串
(?P<name>)分组起一个别名
(?P=name)引用别名为name的分组匹配字符串

Demo:


竖线的用法,或的关系,同时将126和163用括号括起来,表示他们是一个分组


再次使用([\w]+>)这个分组的时候使用\1 可以看到如果前后不匹配,则返回空,分组过多的时候,用数字就会分不清哪个是哪个,所以可以采用给分组命名



结束



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值