python基础26-正则表达式

今日学习

正则表达式

作用:主要用于数据的查找和筛选。正则表达式本质上就是使用一些符号的组合产生一些特殊的含义
​ 然后去字符串中筛选出符合条件的数据,不仅仅py里支持,shell,c等等

1.需求:编写代码校验用户输入的手机号是否合法
 --------------------------------------------------------------------- ----
    	python正常代码逻辑实现,繁琐
------------------------------------------------------------------------	
正则方法处理
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直接的任意一个数字
-----------------------------------------------------------------------------
[A-Z] 匹配A到Z之间的任意一个字母,(包括A和Z)
-----------------------------------------------------------------------------
[a-z] 匹配a-z之间的任意一个字母(包括a-z)
-----------------------------------------------------------------------------
[0-9a-zA-Z] 数字,小写字母,大写字母都可以.
----------------中括号内编写的多个值都是或的关系------------------------------

正则表达式之特殊符号

--------特殊符号在没有量词修饰的情况下,一个符号一次只会针对一个数据值--------
.            匹配除换行符以外的任意字符
------------------------------------------------------------------------
\w 			匹配字母或数字下划线             
-------------------------------------------------------------------------
\W           匹配非字母或者数字或下划线
-------------------------------------------------------------------------
^            匹配字符串的开头
--------------------------------------------------------------------------
$            匹配字符串的结尾
-------------------------------------------------------------------------
^$           限制查找 eg: ^9$,查找9
-------------------------------------------------------------------------
a|b        	 匹配a或者字符b      |管道符,很多场景下的意思都是或
--------------------------------------------------------------------------
()          小括号,给正则表达式分组,不影响正则表达式的匹配
--------------------------------------------------------------------------
[]			匹配字符组中的字符
--------------------------------------------------------------------------
[^]			p匹配除了字符组中字符的所有数字
--------------------------------------------------------------------------
[^a]*		除a以外,全部都进行匹配
--------------------------------------------------------------------------
\d			匹配数字:[0-9]
--------------------------------------------------------------------------
\D			匹配非数字:[^0-9]
--------------------------------------------------------------------------
\s 			匹配空格字符[\t\r\n\f]
--------------------------------------------------------------------------
\S			匹配非空格[^\t\r\n\f]
------------------------------------------------------------------------------

正则表达式量词

  • ​ 注意:正则表达式所有的两次都是贪婪匹配
量词:此不能单独使用,必须跟在表达式后面,并且只能紧挨着左边的哪一个
-----------------------------------------------------------------------
*		重复 0 或者更多次,默认的情况就是尽可能多
------------------------------------------------------------------------
+ 		重复 1 次或者更多次,默认的情况下就是尽可能多
------------------------------------------------------------------------
?		重复 0 次或者 1 次,默认的情况下就是1次
------------------------------------------------------------------------
{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'

正则表达式实战

编写校验用户手机号的正则
	0?(13|14|15|17|18|19)[0-9]{9}
	
编写校验用户身份证的正则
	\d{17}[\d|x]|\d{15}
	
编写校验用户邮箱的正则
	\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}
	
编写校验用户qq号的正则
	[1-9]([0-9]{5,11})
"""
常见的正则百度查找即可 我们需要做到的时候能够看到别人写的
能够完成基础的修改即可
"""
posted @ 2022-07-19 16:16  名字长的像一只老山羊  阅读(54)  评论(0编辑  收藏  举报