正则表达式
什么是正则表达式
1.在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
2.顺便给大家分享一波福利小网站:http://tool.chinaz.com/regex/
功能强大,内容劲爆
![image](https://img2022.cnblogs.com/blog/2904194/202207/2904194-20220719160746770-1054651241.png)
正则表达式字符组
1.整数表达式
[0-9] 在正则表达式中,使用[0-9]就是表达所有传输的值只接受,0到9的整数,别的无论是什么全部都不接收。
简写:[0-9] 全拼:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2.大写字母表达式
[A-Z] 在正则表达式中,使用[A-Z]的时候就是只接收命大写A到大写Z之间的字母,也是别的什么都不接收。
简写[A-Z] 全拼:[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
3.小写字母表达式
[a-z] 在正则表达式中,使用[a-z]的时候其实就是只接收小写a到小写z之间的字母,别的全部都不接收。
简写:[a-z] 全拼:[abcdefghijklmnopqrstuvwxyz]
4.混合表达式
[0-9a-zA-Z] 在正则表达式中,使用混合表达式就是除了特殊符号外其他的东西只要是数字和字母全都接收。
简写:[0-9a-zA-Z] 全拼:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9,ABCDEFGHIJKLMNOPQRSTUVWXYZ,abcdefghijklmnopqrstuvwxyz]
5.字符组在没有量词的配合使用下一次只会和一个字符搭配
正则表达式特殊符号
序列号 |
特殊字符 |
主要功能 |
1. |
. |
匹配除换行符之外的任意字符 |
2. |
\w |
小写w匹配字母,数字下划线 |
3. |
\W |
大写W匹配任意不是字母,数字,下划线,汉字之外的字符 |
4. |
\s |
小写s匹配任意地空白字符 |
5. |
\S |
大写S匹配任意不是空白字符的字符 |
6. |
\d |
小写d匹配数字 |
7. |
\D |
大写D匹配任意非数字的字符 |
8. |
\b |
小写b匹配单词的开始或结束 |
9. |
\B |
大写B匹配不是单词的开头或结尾的位置 |
10. |
^ |
匹配字符串的开头 |
11. |
[^x] |
匹配任何除x以外的任意字符 |
12. |
$ |
匹配字符串的结尾 |
13. |
^''$ |
搭配使用的时候可以精确的限制寻找出的具体内容 |
14. |
[^aeiou] |
匹配任何以aeiou这几个字母以外的任意的字符 |
15. |
| |
管道符很多场景下都是或的意思,将两个数据进行连接 |
16. |
() |
给正则表达式进行分组但是不影响正则表达式的匹配 |
正则表达式量词
1.在正则表达式中所有的量词都默认的是贪婪匹配,能匹配多次绝对不会去匹配少次(越多越好,来者不拒)
2.在正则表达式中量词不能单独使用,必须跟在表达式的后方并且只能影响量词左边的那个元素
序列编号 |
量词 |
主要功能 |
1. |
* |
重复零次或更多次 |
2. |
+ |
重复一次或更多次 |
3. |
? |
重复零次或一次 |
4. |
|
重复n次 |
5. |
|
重复n次或更多次 |
6. |
|
重复n到m次 |
正则表达式贪婪他与非贪婪
1.贪婪表达式的展示
案例:<scrip>joseph.21.NB<scrip>
正则表达式:<.*>
结果:<scrip>joseph.21.NB<scrip>
会将除了两边规定需要的东西除外的所有东西全部都拿进来,有多少拿多少,只要后面还有可以供结尾单位收获的东西,其他的东西全部都拿走
2.非贪婪表达式展示
案例:<scrip>joseph.21.NBerdtfyguhijokpibhugfdzd@$%^&^%$REFGJHNBV^&*UYT9tkluy48tiojhiy8tipkngb0!@$%^&**^%$%^<scrip>
正则表达式:<.*?>
结果:<scrip> <scrip>
中间无论有多少东西我全都不为所动,圣人君子般的作为
3.所有的量词在默认的时候全都是贪婪匹配,但是当量词遇到?那么他就会变得不那么贪婪,我们以后在使用正则表达式的时候经常使用的就是.*和.*?这两种,并且结束的标志有上述符号左右两边添加的表达式决
正则表达式取消转义
1.在正则表达式的里转义一般使用\来进行转义,用来取消某些特殊含义的使用例如\n但是当\遇到\\n时那么一条杠就没用了,我们就需要给每一个特殊符号都给他搭配一个转义符,否则没用
2.在我们的python中也有取消转义的特殊表现就是我们的r,来取消转义并且,一个久完全搞定
转义案例 |
正则表达式转义 |
python转义 |
\n |
\\n |
r'\n' |
\\n |
\\\\n |
r'\\n' |
|
|
|
常见的正则表达式的应用
用户需求 |
正则表达式 |
qq登录验证 |
1-9 |
手机号验证 |
0?(13|15|17|18|19)[0-9] |
身份证号验证 |
\d{17}[\d|x]|\d |
邮箱账号 |
\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+.)+[A-Za-z] |