元字符
正则表达式语法:
![270948154496112.png](https://i-blog.csdnimg.cn/blog_migrate/9aeb99146c3667c0881742f24d313e6c.png)
1、[...]:
用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'
--常用来指定一个字符集,字符集中的一个或多个都能被匹配:[abc];[a-z];[0-9];[A-Z].也可以写成[a-z0-9A-Z]
--元字符在字符集中不起作用:[abc$]
--补集匹配不在区间范围内的字符[^5]
--元字符在字符集中不起作用:[abc$]
--补集匹配不在区间范围内的字符[^5]
![270948159819783.png](https://i-blog.csdnimg.cn/blog_migrate/2d0fa6e3443f5f5b82394d938cd3d45d.png)
2、^:匹配行首,符号放在字符串前面如:h=r'^hello ' r表示原意
--只匹配字符串的开始。但在MULTILINE模式里,也可以直接匹配字符串中的每个换行
![270948165124454.png](https://i-blog.csdnimg.cn/blog_migrate/bb76501838f449e08c846e1da4e9ef4e.png)
3、$:匹配行尾,符号放在字符串后面如:o=r'boy$'
![270948171845082.png](https://i-blog.csdnimg.cn/blog_migrate/07130b05db732af167fa58cb67f15c56.png)
4、\:取消元字符变成普通字符串,
--反斜杠后面可以加不同的字符以表示不同的特殊意义:
\d--匹配任何十进制数;相当于[0-9]
\D--匹配任何非数字字符;相当于[^0-9]
\s--匹配任何空白字符;相当于[\t\n\r\f\v]
\S--匹配任何非空白字符;相当于[^\t\n\r\f\v]
\w--匹配任何字符数字字符;相当于[a-zA-Z0-9]
\W--匹配任何非字母数字字符;相当于[^a-zA-Z0-9]
\d--匹配任何十进制数;相当于[0-9]
\D--匹配任何非数字字符;相当于[^0-9]
\s--匹配任何空白字符;相当于[\t\n\r\f\v]
\S--匹配任何非空白字符;相当于[^\t\n\r\f\v]
\w--匹配任何字符数字字符;相当于[a-zA-Z0-9]
\W--匹配任何非字母数字字符;相当于[^a-zA-Z0-9]
![270948177777967.png](https://i-blog.csdnimg.cn/blog_migrate/ad2f7dde3218af01c88c64ccb6dd1bb1.png)
5、{}:
1》{n}精确匹配n个前面表达式
![270948186841824.png](https://i-blog.csdnimg.cn/blog_migrate/f98a559bdc60260ad718dae03536a022.png)
2》{n,m}:匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式
![270948197935151.png](https://i-blog.csdnimg.cn/blog_migrate/0e845506b920438f07246aac33a00144.png)
6、re*:匹配*号前面表达式0到多次,0次即没有,最多支持20亿次
![270948206211265.png](https://i-blog.csdnimg.cn/blog_migrate/aee219ac0f9368866b6de88659a8ab4f.png)
7、re+:匹配1个或多个的表达式。跟上面的*不同的是,他最少要求有1次。
![270948209182707.png](https://i-blog.csdnimg.cn/blog_migrate/5d7428ffe7f9e35e60714e246e756039.png)
贪婪方式:
9、compile(编译):当一个正则需要被多次使用的时候,可以使用complie方法将正则编译赋给一个变量。
10、re.I: 大小写均可匹配。(修饰符)
11、re.match:尝试从字符串的开始匹配一个模式,匹配成功re.match方法返回一个匹配的对象matchobject,否则返回None。一般做是否能匹配的判断式
,
![270948212629135.png](https://i-blog.csdnimg.cn/blog_migrate/0cb22c3a97bb79db0ec37f108051a4f7.png)
非贪婪模式:
![270948218097036.png](https://i-blog.csdnimg.cn/blog_migrate/949c07679b57c5c2b2fb7ae3fc369b35.png)
9、compile(编译):当一个正则需要被多次使用的时候,可以使用complie方法将正则编译赋给一个变量。
语法:re.compile(正则,修饰符) *正则可以是已赋值的变量名,也可以直接是正则内容譬如:r'hello'。修饰符在下面逐一呈现
![270948222157978.png](https://i-blog.csdnimg.cn/blog_migrate/a1eb113b1552d37fee15fab7a3917b38.png)
10、re.I: 大小写均可匹配。(修饰符)
![270948229344592.png](https://i-blog.csdnimg.cn/blog_migrate/7ba389a73174bf2be908f8a33a29ced9.png)
1》match用法:
13、re.findall:找到 RE 匹配的所有子串,并把它们作为一个列表返回。这个匹配是从左到右有序地返回。如果无匹配,返回空列表![270948235436005.png](https://i-blog.csdnimg.cn/blog_migrate/6c37e1adacee40fb8db8b4fc05fb761c.png)
2》使用match作为判断条件,执行语句块:
![270948242319862.png](https://i-blog.csdnimg.cn/blog_migrate/e95dbf51f4733dc8a7b462af40a1e42c.png)
12、re.search:将字符串的所有字串尝试与正则表达式匹配,匹配成功返回对象matchobject,失败返回None。与match不同的是match只匹配开始,而search匹配所有。
![270948256375633.png](https://i-blog.csdnimg.cn/blog_migrate/57e199fafc06d0077a4f82f4e109a6ec.png)
![270948261521776.png](https://i-blog.csdnimg.cn/blog_migrate/51b1ec08c4edb486d19bcbb3ac9e7fa0.png)
![270948266216231.png](https://i-blog.csdnimg.cn/blog_migrate/f3fe8e64c3c941de13900b41a7a78d0e.png)
15、. :
匹配任意字符,除了换行符,
![270948272625103.png](https://i-blog.csdnimg.cn/blog_migrate/7525c1eed9261adf14f8df17cf9d51e8.png)
![270948277627017.png](https://i-blog.csdnimg.cn/blog_migrate/fe8a331ca5b8e39ee4274751681047f5.png)
17、re.M: 多行匹配,影响 ^ 和 $ M:MULTILINE
![270948285591374.png](https://i-blog.csdnimg.cn/blog_migrate/3c7ba6d083801107887f4159569b2d81.png)
![270948293242974.png](https://i-blog.csdnimg.cn/blog_migrate/46bf11948c01b4f9d9eb7b6a511a50c4.png)