正则表达式
不属于任何一门编程语言 是一个独立的学科 主要用于数据的查找与筛选
* 正则表达式本质上就是使用一些符号的组合产生一些特殊的含义 然后去字符串中筛选出符合条件的数据
需求:编写代码校验用户输入的手机号是否合法
常见 13 15 17 18 19
正则表达式
import re
phone_num=input('把你的手机号说一下>>>:').strip()
if re.match('^[13|15|17|18|19][0-9]{9}',phone_num):
print(phone_num)
else:
print('输入不合法')
正则表达式之字符组
正则表达式的线上测试网址:http://tool.chinaz.com/regex/
字符组在没有量词修饰的情况下一次只会针对一个数据值
[0-9]匹配0到9之间的任意一个数字(包括0和9)
全称是:[0123456789]
[A-Z]匹配A到Z之间的任意一个字母(包括A和Z)
全称是:[ABCD...WXYZ]
[a-z]匹配A到Z之间的任意一个字母(包括a和z)
全称是:[abcd...wxyz]
在中括号内编写的多个数据值彼此都是或的关系
[0-9a-zA-Z]
数字、小写字母、大写字母都可以
正则表达式特殊符号
特殊符号在没有量词修饰的情况一个符号只会针对一个数据值
| 符号 | 作用 |
|---|---|
| . | 匹配除换行符以外的任意的字符 |
| \w | 匹配字母或数字或下划线 |
| \W | 匹配非字母或数字或下划线 |
| \d | 匹配数字 |
| 匹配字符串的开头 | |
| $ | 匹配字符串的结尾 |
| a | b |
| () | 给整则表达式分组 不影响正则表达式的匹配 |
| [] | 匹配字符组中的字符 |
| [^] | 匹配字符组中的所有字符 |
当^和$两者嘴和能够明确的限制想要查找的具体数据
管道符|在很多场景下的意思都是或
()用于后续的正则起别名 分组获取对应的数据
正则表达式量词
- 在正则表达式中所有的量词默认都是贪婪匹配
- 量词不能单独使用必须跟在表达式对的后面 并且只能影响紧挨着的左边哪一个 | 符号 |作用 | | --- | --- | | * |重复零次或跟多次(默认就是尽可能多)| | + |重复一次或更多次(默认就是尽可能多)| | ?|重复零次或一次(默认就是一次)| |{n}|重复n次| |{n,}|重复n次或更多次| |{n,m}|重复n到m次|
贪婪匹配与非贪婪匹配
待匹配的文本:<script>alert(123)</script>
正则表达式:<.*> # 贪婪匹配
上述正则匹配出来的内容是:<script>alert(123)</script>
正则表达式:<.*?> # 非贪婪匹配
上述正则匹配出来的内容是:<script> </script>
所有的量词默认都是贪婪匹配 但是如果在量词的后面紧跟一个问号
那么就会变成非贪婪匹配
小技巧:以后我们在使用贪婪匹配或者非贪婪匹配的时候一般都是用.*或者.*?
并且结束的标志有上述符号左右两边添加的表达式决定
取消转义
正则表达式中取消斜杠与字母的特殊含义 就是在斜杠前面加斜杠
\\n \n
\\\\n \\n
在python中有更加简便的写法
r'\n'
r'\\n'