正则表达式

记录学习到的相关知识作为日后参考

在线正则表达式测试网站:regex101.com

以该网站为例

详见【10分钟快速掌握正则表达式】

一.限定符

1.   ?

表示匹配?前面的出现0次到1次的字符

也就意思这个d可有可无,可以匹配use和used

2.    *

它将匹配0个或多个字符

在这句话中ab*c意味着匹配ac之间只能出现0个或者多个b,不能出现其他字符

3.   +

它将匹配出现1次以上的字符

4. {}

若希望b出现次数,可以在b后面增加一个花括号如ab{6}c

若希望次数为2~6次,则改为ab{2,6}c

若希望次数为2次及以上,则改为ab{2,}c

若希望匹配多个字符则用()将多个字符括起来。如:

二.运算符

1.或运算符   |

如a (cat|dog)这里将先匹配a和一个空格然后匹配括号里的cat或者dog,注意空格必不可少,否则变成a cat或者dog

2.方括号  []

方括号里的内容代表匹配的字符只能来自它们

也可以在方括号指定范围的范围,如[a-z]代表所有的小写字符,[a-zA-Z]代表所有的英文字符,

[a-zA-Z0-9]代表所有的英文字符和数字

3.非运算符  ^ (脱字符)

代表匹配除了^后面列出的所有字符

如[^0-9]代表所有的非数字字符

三.元字符

1. \d 数字字符 等同于[0-9]

2.\w 单词字符(所有英文单词、数字以及下划线)

3.\s 空白符(包含Tab和换行符)

4.\D 非数字字符

5.\W 非单词字符

6.\S 非空白字符

7. 句点. 代表任意字符但不包含换行符

8. ^ 会匹配行首, $ 会匹配行尾 ,比如^a只会匹配行首的a,a$匹配行尾的a

贪婪与懒惰匹配
*+{}在匹配字符串时会尽可能多的匹配字符

如在匹配一个html标签时,<.+>会匹配所有字符包括>字符

只需将其改为<.+?>就可将正则表达式中默认的贪婪匹配变为懒惰匹配

四.python中的正则匹配

具体见:https://www.bilibili.com/video/BV1zK4y1Z75d?p=7&vd_source=c0b93c817937756208a55b9fb682e3e0

1.findall函数

首先正则表达式中用到的是re库,在re库中,findall函数用于匹配你想要找的数据

在findall函数中第一个参数是想要找的内容,第二个参数是在哪里寻找,这里的输出结果以列表形式存储

2.匹配某类内容

匹配单个数字

输出:

匹配单个非数字字符

输出:

3.某些符号的作用

输出:

“+”修饰前面符号,若为\d则匹配一个或者多个数字,若为具体内容如5,则匹配内容中出现的一个或者多个5.类似的还有“?”,匹配0个或者1个字符。“*”表示匹配0个或者多个字符。[]是字符集,匹配其中出现的任意一个字符,如[abc]匹配的字符,该字符可以是 abc 中的任意一个,[\d]匹配的则是任意数字。“.”是统配符,匹配除了换行以外的任意符号

{}用于匹配范围,如\d{4}表示匹配四个数字,\d{1,4}表示匹配1到4个数字,\d{,4}匹配0到4个数字,当数字长度不满足时不会匹配成功

输出:

可以看到这里的163没有成功匹配,而长度大于4的数字串仅匹配前4个数字

| 表示或的关系,代表|前后的情况满足其一即匹配成功,如

输出:

4.限定位置

^用于限定匹配行首, $ 匹配行尾,如下面这种情况

输出:

可以看到因为^的存在,使得正则表达式只匹配了第一个11位数字,注意使用时是形如^a和a$(一个符号在前面,一个符号放后面的)

5.内部约束

具体实现通过捕获组来实现,当你使用正则表达式时,有时你想要匹配的文本的一部分,并对这一部分进行进一步处理或保存。这时就可以使用捕获组。

捕获组是由圆括号 () 定义的一个子表达式,在正则表达式中,它会将匹配的文本保存到一个特定的位置,以供后续引用或进一步处理。当匹配成功时,捕获组中的内容会被记录下来,可以通过后向引用来引用它们。如:

输出:

更深入的用法是对捕获组的引用

如:

输出:

这个正则表达式中(\w{3})(\1)中的 \1 是反向引用,它表示对正则表达式中第一个捕获组的引用。即第二个捕获组会与第一个捕获组进行比较,若一样才会输出,以此类推,要与第二个捕获组比较则用(\2)。这个正则表达式会匹配任意重复两次的连续三个字母、数字或下划线字符的字符串。例如"abcabc" 或 "123123" 都会匹配。

5.进阶表示

如:

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值