python中的re模块的作用_Python—Re模块,Pyhtonre

Pyhton——re模块

一、

re模块里有两种字符:

1、普通字符: 大多数字符和字母都会和自身匹配

2、元字符: . ^ $ * + ? { } [ ] | ( ) \

1、re.findall(“xx1”,“xx2”)——完全匹配。(xx1为要匹配的关键字,xx2为被匹配的内容)

2、. ——通配符(功能是任何字符都可以代替,除了“\n” 换行符)

714fe9936411b99d7d14827fb67456d8.png

3、^ ——从开头去匹配

ea762a9b0e5e619d4be740c66f4c58bf.png

4、 $ ——从结尾去匹配

863656e2cb6e6730c69b93bc5ea0cdf7.png

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

二、

重复符号(重复紧挨着前面的那个字符)

1、* ——重复

0到无穷次

d1f3c778d63193a7d0d1aede4082068f.png

由于是0到无穷次,所以第一个"d"没有匹配上,也算

2、+ ——重复

1到无穷次

274de6d687f1edbd346b1403b7d4c492.png

3、 ? ——重复

0到1次

(如果有1次取1次,没有取0次)

bcca9fe8fcd88d992c66385f7a2ff11c.png

9c0a2126962d07a65ba6079b1e787f21.png

4、{x} ——重复次数自己定,比如:

{2},重复两次.

9557cf20e7c0b188c1a8fe903d62060a.png

{5},重复5次

534a461404f79d627c42c5a5ec1b4815.png

如果是{2,5},则重复2到5次(包括2次跟5次)

d080866ab99ab6654a9ca0e7c6038245.png

注意:前面的 * + ? 等都是贪婪匹配,也就是取最大的数(比如有3个就取3个,有5个取5个,不会取两个,也不会取1个)。在后面加个 ?则变成惰性匹配,取最小

b2bd5d3cb41bc978cf6f68d1a4f43b13.png

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

三、

[ ]——字符集

1、字符集里的字符与前面的字符形成组合进行匹配

2616369871472f5c85a03eb81f9357d9.png

2、前面说的符号在字符集里都变成普通符号

45fac15704f5e1c28a94d98ff1e22fc9.png

3、字符集里面的特殊符号

虽然前面的符号在字符集里变成普通符号,但是字符集里有另外的特殊符号 - ^ \

3(1)、 - ——这个减号意思是范围,比如:a-z,是a到z的意思

31c092d4e2de122d181cf734670826a2.png

如果是重复字符集里需要多个,则:

a184f0ad1868086b1e1b2f4aee6bb840.png

3(2)、 ^ ——字符集里的尖角号意思是:非

78c7db40f453af3f0ee19fb8ced51672.png

a 到 f 都不匹配,所以匹配出az

3(3)、 \ ——让有意义的字符变没意义,让没意义的字符变有特定意义

反斜杠后边跟元字符去除特殊功能,比如 \ .

反斜杠后边跟普通字符实现特殊功能,比如\d

\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_ ]。

\b 匹配一个特殊字符边界,比如空格 ,&,#等

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

4、转义字符 \ 相关知识

在匹配规则前加一个 r ,其意思是:原生字符串,意味着使匹配规则里面的字符不作任何转义,没有特殊意义。

匹配失败

ec5c17b4b4f056e293ce4dd7dabdb3cb.png

匹配成功

90db8ead061c1bf8315f1fa8c7f00744.png

另外一种方法:

在前面加个 \ ,使第二个 \ 失去特殊意义

f92de1a7992ce1dcf30455548fb8900c.png

由于这个re模块,需要经过python解释器的编译,再进入re模块里,所以两个反斜杠变成一个反斜杠,这个反斜杠暂时没有意义,等进入到re模块里,这个反斜杠又有了意义,此时的 \b 就有其特殊意义,最后就能匹配成功。

1c234c1842b7307ffe187213cc90237d.png

同理:

2f094ab31ba213b060d635dd597cf1b9.png

这里的四个反斜杠,第一、三反斜杠使二四反斜杠失去特殊意义,变为普通符号,进入到正则后,两个反斜杠又变成一个普通字符 \ ,这时匹配成功,而后出来经过反编译,会输出两个反斜杠

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

四、

| ——意为“或”

e79196c0bc6e8491b003bc039a794e52.png

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

re.findall() 与 re.search() 区别:

findall() 会把所有匹配出的结果放到一个列表里面。

search()只会把第一个匹配出的结果拿出来放到一个对象里面。如果匹配不成功,则什么都不会返回。如果要取出这个对象里面的数值,用group()方法。

6ec368133b56b94066b0ffd82d53b03a.png

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

( ) ——分组功能

当要把零散的字符当成一个整体,就用括号括起来

没有括号

b5bc7dfa78502870964a2fbc910b040c.png

有括号

5d23cd8ac3df09c09dc1b274fac7f72f.png

注意:

d1f6617c93fd472238fb68a15f103b72.png

这里虽然把 abc 当作整体,但是匹配出来的结果不是想要的 abcabcabc ,这是因为findall()会优先把匹配结果组里的内容返回(也就是 abc), 如果想要匹配出 abcabcabc ;则取消权限即可。可在 abc 前面加 ?: 此时就会把优先权限取消。

6baf1a98b8c405fb3a685824951ad918.png

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

分组之 ?P< name > —— 注意:P要大写

此功能是给匹配出来的内容分组命名

63dfd195543dab7966d913034bde4a67.png

只要名字:

d169adb70af78f084603066e72397ba5.png

只要年龄:

a531c7d146199b41795cc7273ad7c643.png

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

re模块下的方法:

findall() 与 search() 具体用法看前面

1、re.match() ——从开头进行匹配,匹配不成功会报错。匹配成功用group()取出来;此方法用的很少,多数用search() 。

2、re.spilt() —— 分割。

注意:如果左边没有内容,则会分割出一个 空(" ")出来。

0b2c18e1ae7efea3b6bb14880788a234.png

3、re.sub(“xx1”,“xx2”.“xx3”) —— 替换。xx1为替换前对象;xx2为替换后对象;xx3为内容

2e9940e928c04345165464115250869c.png

3、re.subn() —— 使用方法跟sub一样。结果会做成一个元组,返回替换次数

12d39594ac13bfae1c185cf561eaed3b.png

4、re.compile() —— 可以把匹配规则装进一个变量里;如果需要对多个内容进行同一个规则匹配,则可以使用此方法

6aebf13d8dff5589df76b4205e9f856a.png

5、re.finditer() —— 跟 findall() 差不多,会把结果封装进一个迭代器,返回迭代器对象

0d95d745826dbe4b6ca2bb9b977c99f6.png

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值