7/19课上内容整理

150 阅读3分钟

正则表达式

不属于任何一门编程语言 是一个独立的学科 主要用于数据的查找与筛选

* 正则表达式本质上就是使用一些符号的组合产生一些特殊的含义  然后去字符串中筛选出符合条件的数据
 需求:编写代码校验用户输入的手机号是否合法
     常见 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匹配数字
匹配字符串的开头
$匹配字符串的结尾
ab
()给整则表达式分组 不影响正则表达式的匹配
[]匹配字符组中的字符
[^]匹配字符组中的所有字符
当^和$两者嘴和能够明确的限制想要查找的具体数据
管道符|在很多场景下的意思都是或
()用于后续的正则起别名  分组获取对应的数据

正则表达式量词

  • 在正则表达式中所有的量词默认都是贪婪匹配
  • 量词不能单独使用必须跟在表达式对的后面 并且只能影响紧挨着的左边哪一个 | 符号 |作用 | | --- | --- | | * |重复零次或跟多次(默认就是尽可能多)| | + |重复一次或更多次(默认就是尽可能多)| | ?|重复零次或一次(默认就是一次)| |{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'