前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python基础】正则表达式

【Python基础】正则表达式

原创
作者头像
superhua
发布2022-01-29 12:24:00
2730
发布2022-01-29 12:24:00
举报
文章被收录于专栏:CNNCNN

提前祝大家新年好,本文应该是春节前最后一篇文章啦~

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,Python主要通过re模块使用正则表达式.

本文不介绍正则表达式的语法本身,只介绍Python中使用正则表达式。

1 字符串搜索

1.1 re.search

使用re.search函数,扫描整个字符串并返回第一个成功的匹配。

代码语言:python
复制
re.search(pattern, string, flags=0)

各个参数的含义如下:

pattern:输入的正则表达式 string: 要匹配的字符串。 flags: 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

如果re.search方法匹配成功,则返回一个匹配的对象;否则返回None。我们以简单例子说明:

代码语言:python
复制
import re
result = re.search("bitpy", "www.bitpy.com")
print(result)

输出结果如下:

代码语言:python
复制
<re.Match object; span=(4, 9), match='bitpy'>

1.2 提取匹配结果

上一小节得到了匹配结果对象(即re.MatchObject对象),可以根据实际需求提取对应的信息

获取匹配区间

代码语言:python
复制
import re
result = re.search("bitpy", "www.bitpy.com")
print(result.span())

输出结果如下:

代码语言:python
复制
(4, 9)

除此之外,还有start()函数返回匹配开始的位置;end()函数返回匹配结束的位置。

获取匹配内容

如果需要提取关键子串,可以通过在正则表达式中加入括号,然后对匹配结果通过group函数提取。

代码语言:python
复制
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,表示此字符串是正则表达式。

输出结果如下:

代码语言:python
复制
('www', 'bitpy', 'com')
www.bitpy.com
www
bitpy
com

2 字符串匹配

re.match尝试从字符串的起始位置匹配一个模式,如果匹配成功,返回re.MatchObject对象;否则返回none

代码语言:txt
复制
re.match(pattern, string, flags=0)

以简单实例说明:

代码语言:python
复制
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对象,因此,也可以通过spangroup等函数获取对应的信息。

输出结果如下:

代码语言:python
复制
(0, 5)
('bitpy',)

3 标志位flags参数

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 IM 标志:

修饰符

描述

re.I

使匹配对大小写不敏感

re.L

做本地化识别(locale-aware)匹配

re.M

多行匹配,影响 ^$

re.S

使 . 匹配包括换行在内的所有字符

re.U

根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.

re.X

该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

欢迎关注我【Python学习实战】,每天学习一点点,每天进步一点点。

长按关注【Python学习实战】
长按关注【Python学习实战】

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 字符串搜索
    • 1.1 re.search
      • 1.2 提取匹配结果
        • 获取匹配区间
        • 获取匹配内容
    • 2 字符串匹配
    • 3 标志位flags参数
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档