提前祝大家新年好,本文应该是春节前最后一篇文章啦~
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,Python
主要通过re
模块使用正则表达式.
本文不介绍正则表达式的语法本身,只介绍Python
中使用正则表达式。
使用re.search
函数,扫描整个字符串并返回第一个成功的匹配。
re.search(pattern, string, flags=0)
各个参数的含义如下:
pattern
:输入的正则表达式string
: 要匹配的字符串。flags
: 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
如果re.search
方法匹配成功,则返回一个匹配的对象;否则返回None
。我们以简单例子说明:
import re result = re.search("bitpy", "www.bitpy.com") print(result)
输出结果如下:
<re.Match object; span=(4, 9), match='bitpy'>
上一小节得到了匹配结果对象(即re.MatchObject
对象),可以根据实际需求提取对应的信息
import re result = re.search("bitpy", "www.bitpy.com") print(result.span())
输出结果如下:
(4, 9)
除此之外,还有start()
函数返回匹配开始的位置;end()
函数返回匹配结束的位置。
如果需要提取关键子串,可以通过在正则表达式中加入括号,然后对匹配结果通过group
函数提取。
import re result = re.search(r"(.*)\.(.*)\.(.*)", "www.bitpy.com") if result: print(result.groups()) print(result.group(0)) print(result.group(1)) print(result.group(2)) print(result.group(3))
注意第二行,引号前面加字母
r
,表示此字符串是正则表达式。
输出结果如下:
('www', 'bitpy', 'com') www.bitpy.com www bitpy com
re.match
尝试从字符串的起始位置匹配一个模式,如果匹配成功,返回re.MatchObject
对象;否则返回none
。
re.match(pattern, string, flags=0)
以简单实例说明:
import re result_1 = re.match(r"bitpy", "bitpy.com") result_2 = re.match(r"(.*).com", "bitpy.com") if result_1: print(result_1.span()) if result_2: print(result_2.groups())
注意,
re.match
返回的也是re.MatchObject
对象,因此,也可以通过span
、group
等函数获取对应的信息。
输出结果如下:
(0, 5) ('bitpy',)
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|)
它们来指定。如 re.I | re.M
被设置成 I
和 M
标志:
修饰符 | 描述 |
---|---|
re.I | 使匹配对大小写不敏感 |
re.L | 做本地化识别(locale-aware )匹配 |
re.M | 多行匹配,影响 ^ 和 $ |
re.S | 使 . 匹配包括换行在内的所有字符 |
re.U | 根据Unicode字符集解析字符。这个标志影响 \w , \W , \b , \B . |
re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
欢迎关注我【Python学习实战】,每天学习一点点,每天进步一点点。