python re模块

模块介绍

re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

模块函数

1、match函数
re.match(pattern, string, flags=0)

参数pattern表示匹配的正则表达式,参数string表示要匹配的字符串,参数flags表示用于控制正则表达式的匹配方式,多个标志可以通过按位 OR(|) 它们来指定。可选的值如下:

修饰符描述
re.I使匹配对大小写不敏感
re.L做本地化识别(locale-aware)匹配
re.M多行匹配,影响 ^ 和 $
re.S使 . 匹配包括换行在内的所有字符
re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

>>> pattern = r"Cats"
>>> string = "Cats are smarter than dogs"
>>> re.match(pattern, string)
<re.Match object; span=(0, 4), match='Cats'>
# 设置flags=re.I使表达式对大小写不敏感
>>> pattern = r"cats"
>>> re.match(pattern, string, flags=re.I)
<re.Match object; span=(0, 4), match='Cats'>
2、search函数
re.search(pattern, string, flags=0)

扫描整个字符串并返回第一个成功的匹配。

>>> pattern = r"are"
>>> string = "Cats are smarter than dogs"
>>> re.match(pattern, string)
None
>>> re.search(pattern, string)
<re.Match object; span=(5, 8), match='are'>

re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回 None,而 re.search 匹配整个字符串,直到找到一个匹配。

3、sub函数
re.sub(pattern, repl, string, count=0, flags=0)

用指定字符串替换字符串中的匹配项。参数pattern表示匹配的正则表达式,参数repl表示替换的字符串,参数string表示要匹配的字符串,参数count表示模式匹配后替换的最大次数,默认 0 表示替换所有的匹配,参数flags表示正则表达式的匹配方式。

# 用is替换字符串中的are
>>> pattern = r"are"
>>> string = "Cats are smarter than dogs"
>>> repl = "is"
>>> re.sub(pattern, repl, string)
'Cats is smarter than dogs'
4、compile函数
re.compile(pattern, flags=0)

编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 、findall()、sub()等多个函数使用。

>>> pattern = re.compile(r"cats", flags=re.I)
>>> pattern
re.compile('cats', re.IGNORECASE)
>>> pattern.match("Cats are smarter than dogs")
<re.Match object; span=(0, 4), match='Cats'>
>>> pattern.search("Cats are smarter than dogs")
<re.Match object; span=(0, 4), match='Cats'>
5、findall函数
re.findall(pattern, string, flags=0)

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。

>>> pattern = r"\d+"
>>> string = "123 is not 12 and 3"
>>> re.match(pattern, string)
<re.Match object; span=(0, 3), match='123'>
>>> re.search(pattern, string)
<re.Match object; span=(0, 3), match='123'>
>>> re.findall(pattern, string)
['123', '12', '3']

注意: match 和 search 是匹配一次 ,而findall 匹配所有。

6、finditer函数
re.finditer(pattern, string, flags=0)

在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

>>> pattern = r"\d+"
>>> string = "123 is not 12 and 3"
>>> re.findall(pattern, string)
['123', '12', '3']
>>> re.finditer(pattern, string)
<callable_iterator object at 0x0000029B2DEA3EE0>
7、split函数
re.split(pattern, string, maxsplit=0, flags=0)

按照能够匹配的子串将字符串分割后返回列表。参数maxsplit表示分割次数,maxsplit=1 分割一次,默认为 0,不限制次数。

>>> pattern = r"\d+"
>>> string = "123 is not 12 and 3"
>>> re.split(pattern, string)
['', ' is not ', ' and ', '']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负韶华ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值