正则表达式
what:一种匹配字符串的规则
where:程序领域:1,登录注册的表单验证 2.爬虫 3.自动化开发
why:可以制定一个规则 1.来确认某一个字符串是否符合规则 2.从大段的字符串中找到符合规则的内容
how:
正则表达式的语法:1.元字符 2.量词 3.特殊用法和现象
1元字符
[...]----匹配字符组(集)中的字符
[^...]---匹配除了字符组中字符的所有字符
\d-------匹配数字
\w-------匹配字母数字或下划线
\s-------匹配任意空白符
\D-------匹配非数字
\W-------匹配非数字或字母或下划线
\S-------匹配非空白符
\n-------匹配一个换行fu
\t-------匹配一个制表符
^--------匹配字符串的开始
$--------匹配字符串的结尾
a|b------匹配a或b
()------匹配括号内的表达式,也表示一个组
.--------匹配除换行符以外的任意字符
\b-------匹配一个单词的边界
2量词
*--------重复零次或更多次
+--------重复一次或更多次
?-------重复零次或一次
------重复n次
-----重复n次或更多次
----重复n到m次
转义符\
在正则表达式中,有很多有特殊意义的元字符,比如\d和\s等,如果要在正则中匹配正常的\d而不是数字
就需要对'\'进行转义,变为’\\‘。
在python中,无论是正则表达式,还是匹配内容,都是以字符串的形式出现的,在字符串中\也有特殊的
含义,本身还需要转义。所以如果匹配一次\d,字符串中要写出\\d,那么正则里面就要写出\\\\d,这样
就太麻烦了。这个时候我们就需要用到了 r'\d'这个概念,此时的正则就是r'\\d'就可以了。
贪婪匹配
贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配
3特殊用法和现象
几个常用的非贪婪匹配
*?------重复任意次数,但尽可能少重复
+?------重复1次或跟多次,但尽可能少重复
??-----重复0次或1次,但尽可能少重复
?---重复n到m次,但尽可能少重复
?----重复n次以上,但尽可能少重复
.*?的用法
.是任意字符
*是取0至无限长
?是非贪婪匹配
合在一起就是,取尽量少的任意字符,一般不会这么单独写,大多用在
.*?x 就是取前面任意长度的字符,知道一个x的出现。
领取专属 10元无门槛券
私享最新 技术干货