第五天 第五章 正则表达式

# 正则表达式

'''
=======元字符=======
1 行定位符:^表示开始 如^tm只能匹配以tm开关的字符串
            $表示结束 如tm$只能匹配以tm结尾的字符串
            如果想匹配tm在任意位置的字符串,直接用tm即可

2 常用元字符:
.
匹配除换行符以外的任意字符
.可以匹配“mr\nM\tR”中的m r M \t R

\w
匹配字母、数字、下划线、汉字
\w可以匹配“m 中 7r\n”中的“m 中 7 r”,但不能匹配“\n”

\W
匹配除字母、数字、下划线或汉字以外的字符
\W可以匹配“m 中 7r\n”中的“\n”

\s
匹配单个空白符(包括Tab键和换行符)
\s可以匹配“mr\tMR”中的“\t”

\S
除单个空白符(包括Tab键和换行符)以外的所有字符
\S可以匹配“mr\tMR”中的m r M R

\b
匹配单词的开始或结束,单词的分界符通常是空格,标点符号或者换行
在“I like mr or am”字符串中,\bm与mr中的m相匹配,但与am中的m不匹配

\d
匹配数字
\d可以与“m7ri”中的字符7匹配
=======元字符=======
'''


'''
=======限定符=======
?
匹配前面的字符零次或一次
colou?r,该表达式可以匹配colour和color

+
匹配前面的字符一次或多次
go+gle,该表达式可以匹配的范围从gogle到goo...gle

*
匹配前面的字母零次或多次
go*gle,该表达式可以匹配的范围从ggle到goo...gle

{n}
匹配前面的字符n次
go{2}gle,该表达式只匹配google

{n,}
匹配前面的字符最少n次
go{2,}gle,该表达式可以匹配的范围从google到goo...gle

{n,m}
匹配前面的字符最少n次,最多m次
employe(0,2),该表达式可以匹配employ、employe和employee三种情况
=======限定符=======
'''


'''
=======字符类=======
表达式查找字母和数字是很简单的,因为已经有了对应这些集合的元字符(如\d和\w)
但如果要查找特定的几个字符(a/e/i/o/u)怎么办,只要在方括号中列出即可。
[aeiou]可以匹配任意一个元音字母
[.?!]可以匹配任意一个符号(. ? 或 !)
[0-9]可以匹配一位数字,和\d一样
[z-z0-9A-Z]和\w一样(如果不考虑中文的话)
[\u4e00-\u9fa5]匹配任意一个汉字
[\u4e00-\u9fa5]+匹配多个连续汉字
=======字符类=======
'''


'''
=======排除字符=======
^表示行的开始,但是当它放到方括号中的时候表示的是排除
[^a-zA-Z]除了字母,其它全都匹配
=======排除字符=======
'''

'''
=======选择字符=======
如果匹配身份证号,就有两种匹配方法,一种是18位,一种是15位。这就需要选择逻辑。
| 选择字符,可以理解为或者
(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$:15位全数字 或 18位全数字 或 17位数字+1位数字或X或x
=======选择字符=======
'''


'''
=======转义字符=======
\ 转义字符,将. ? \这样的特殊字符变为普通字符
匹配IP地址:127.0.0.1,如何写:[1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
这样写有一个问题,因为.可以匹配任意一个字符,所以127101011也可以匹配出来
所以这里就需要转义字符 [1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
这样的话三个数字间只能匹配字符. 而不会匹配其它非点的字符
=======转义字符=======
'''


'''
=======分组=======
小括号的第一个作用就是改变限定符的作用范围,如:(six|four)th匹配sixth或fourth,如果没有小括号则匹配six或fourth
第二个作用就是分组,也称子表达式。如(\.[0-9]{1,3}){3},就是对分组(\.[0-9]{1,3})进行重复操作。
=======分组=======
'''

 

posted @ 2020-08-18 07:51  Zack6688  阅读(156)  评论(0编辑  收藏  举报