千家信息网

如何使用Python正则表达式

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了如何使用Python正则表达式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Python3 正则表达式正则表达式是一
千家信息网最后更新 2026年11月02日如何使用Python正则表达式

这篇文章主要介绍了如何使用Python正则表达式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    Python3 正则表达式

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。本文主要阐述re包中的主要函数。

    在阐述re包中的函数之前,我们首先看议案正则表达式的模式,即使用特殊的语法来表示一个正则表达式。

    1.match函数

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

    • 函数用法:re.match(pattern, string, flags=0)

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

      • re.I 忽略大小写

      • re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境

      • re.M 多行模式re.S 即为' . '并且包括换行符在内的任意字符(' . '不包括换行符)

      • re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库

      • re.X 为了增加可读性,忽略空格和' # '后面的注释

    匹配对象方法:

    • group(num=0): 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

    • groups(): 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

    import reprint(re.match("xixi", "xixi_haha_heihei").group())
    xixi
    line = 'Cats are smarter than dogs'b = re.match(r'(.*) are (.*?) .*', line, re.M|re.I)print(b.group()) # 返回所有print(b.group(1)) # 返回第一组,即(.*)对应的print(b.group(2)) # 返回第二组,即(.*?)对应的
    Cats are smarter than dogsCatssmarter

    2.search函数

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

    函数用法:re.search(pattern, string, flags=0)

    print(re.match('heihei', 'xixi_haha_heihei'))print(re.search('heihei', 'xixi_haha_heihei').group())
    Noneheihei
    line = 'Cats are smarter than dogs'b = re.search(r'(.*) are (.*?) .*', line, re.M|re.I)print(b.group()) # 返回所有print(b.group(1)) # 返回第一组,即(.*)对应的print(b.group(2)) # 返回第二组,即(.*?)对应的
    Cats are smarter than dogsCatssmarter

    search和match的区别

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

    3. sub函数

    re提供了re.sub来替换字符串中的匹配项。
    函数用法:re.sub(pattern, repl, string, count=0, flags=0)

    • pattern : 正则中的模式字符串。

    • repl : 替换的字符串,也可为一个函数。

    • string : 要被查找替换的原始字符串。

    • count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

    • flags : 编译时用的匹配模式,数字形式。

    phone = '133-3333-3333  # this is a phone number'num = re.sub(r'#.*$', '', phone)print('phone num', num)# 移除注释,找到以#开头的。num = re.sub(r'\D', '', phone)print('phone num', num)# 移除非数字内容
    phone num 133-3333-3333  phone num 13333333333

    repl是函数的情况

    def double(matched):    value = int(matched.group('value'))    return str(value * 2)s = 'A233Sfd34'print(re.sub('(?P\d+)', double, s))
    A466Sfd68

    4.compile函数

    compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
    函数使用:re.compile(pattern, flags)

    pattern = re.compile(r'/d+')m = pattern.match('ones123412')print(m)
    None

    5.findall

    在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
    注意:match和search是匹配一次,但是findall是匹配所有。

    函数使用:findall(string, pos, endpos)

    • string 待匹配的字符串。

    • pos 可选参数,指定字符串的起始位置,默认为 0。

    • endpos 可选参数,指定字符串的结束位置,默认为字符串的长度。

    pattern = re.compile(r'\d+')result1 = pattern.findall('xixixix 123 heihiehei 456')result2 = pattern.findall('xixixix 123 heihiehei 456', 0, 15)print(result1)print(result2)
    ['123', '456']['123']

    6.finditer

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

    ittt = re.finditer(r'\d+', '12dsfasdf123asdf534')for ttt in ittt:    print(ttt.group())
    12123534

    7.split

    split 方法按照能够匹配的子串将字符串分割后返回列表。

    函数使用:

    re.split(pattern, string, maxsplit=0, flags=0)

    • pattern: 匹配的正则表达式

    • string: 要匹配的字符串。

    • maxsplit: 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。

    • flags: 标志位,用于控制正则表达式的匹配方式,

    print(re.split('\W+', 'xxixix, xixixi, hehiehei'))print(re.split('(\W+)', ' xxixix, xixixi, hehiehei'))
    ['xxixix', 'xixixi', 'hehiehei']['', ' ', 'xxixix', ', ', 'xixixi', ', ', 'hehiehei']

    感谢你能够认真阅读完这篇文章,希望小编分享的"如何使用Python正则表达式"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

    字符 字符串 函数 正则 表达式 模式 特殊 位置 篇文章 次数 起始 成功 参数 大小 字符集 对象 小组 情况 换行符 数字 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网黑科技 互联网科技名片 南京欣网互联网络科技有限公司 哈尔滨大商圈互联网科技有限公司 唐信互联网科技 大连 火传媒上海互联网科技 互联网科技咨询 互联网 科技服务平台 中盈科技互联网信息有限公司 中国科技互联网公司收入 中国互联网有什么科技含量 栖莱科技互联网股份有限公司 互联网和黑科技的看法 玉溪互联网科技怎么选 哈尔滨屹滨互联网科技有限公司 恒生互联网科技业指数调整周期 工业互联网科技成果转化 长沙易易互联网科技有限公司 东风日产互联网科技公司叫什么 科技互联网企业在行动 科技互联网 互联网金融科技 华服互联网科技靠谱吗 互联网科技工作委员会主任 互联网科技垄断 苏州大垚互联网科技 新华互联网科技2019 消费医药和互联网科技 恒生互联网科技业指数调整周期 雨阳互联网卡科技有限公司
    0