Python基础正则表达式

Posted 走召大爷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础正则表达式相关的知识,希望对你有一定的参考价值。

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

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

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

1 字符串搜索

1.1 re.search

使用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'>

1.2 提取匹配结果

上一小节得到了匹配结果对象(即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

2 字符串匹配

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对象,因此,也可以通过spangroup等函数获取对应的信息。

输出结果如下:

(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基础正则表达式

python正则表达式

python正则表达式

Python中正则表达式

转:Python正则表达式指南

正则表达式