正则表达式笔记

正则表达式由四部分组成
/^\d{5,11}$/i

a)定界符						//
b)原子							\d
c)元字符						{5,11}  限制匹配次数
d)模式修改符 					i不区分大小写

1、基础符号
(1)+:代表前面的字符至少出现一次
(2)*:前面的字符可以出现也可以不出现,或者出现多次
(3)?:前面的字符最多可以出现一次,也可以不出现,或知名一个非贪婪模式

2、特殊的字符
(1) : 匹 配 输 入 字 符 串 的 结 尾 的 位 置 , 要 匹 配 :匹配输入字符串的结尾的位置,要匹配 :字符本身需要添加$,\d$表示必须以数字结束。
(2)():标记一个子表达式的开始和结束的位置, ()表示的就是要提取的分组(Group)
匹配到的数据存起来,以备下次使用

		

输出结果:runoob 123,456
(3)[]:标记一个中括号的开始,可以用来表示范围,[a-zA-Z_)]表示匹配英文字母的大小写,以及一个下划线
[a-zA-Z_][0-9a-zA-Z_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。
(4)\:将下一个字符标记为特殊字符
(5)^:匹配字符串的其起始位置 exp:^\d表示必须以数字开头。
(6){}:匹配输入字符串的开始,详细见限定符
(7)|:在两项之间的选择, A|B可以匹配A或B
(8).:可以匹配任意字符

3、限定符
(1){n}:匹配n次
(2){n,}:至少匹配n次
(3){n,m}:至少匹配n次 最多匹配m次
(4)* :匹配 前面的子表达式零次或多次
(5)+ :匹配前面的子表达式一次或多次
(6)?:匹配前面的子表达式零次或一次
(7)\d:匹配数字
(8)\D:匹配非数字
(9)\w:匹配字母数字下划线
(10)\W:匹配非字母
(11)\s:匹配一个空格
(12)/i : 表示匹配的时候不区分大小写
(13)/g :表示该表达式将用来在输入字符串中查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个
(14)/m :表示多行匹配,什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号
4、贪婪匹配
(1)贪婪匹配的原则是尽可能的,像*和+,加上?号变成非贪婪匹配

example:

由于Python的字符串本身也用\转义,使用python的r前缀,就不用考虑转义的问题了
(1):
>>> t = '19:05:30'
>>> m = re.match(r'^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)
>>> m.groups()
('19', '05', '30')


(2):
>>> m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
>>> m
<_sre.SRE_Match object; span=(0, 9), match='010-12345'>
>>> m.group(0)
'010-12345'
>>> m.group(1)
'010'
>>> m.group(2)
'12345'

你可能感兴趣的:(学习笔记)