展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Python正则表达式的小抄

Python正则表达式的小抄

正则表达式可用于搜索、编辑和操作文本。PythonRegEx被几乎所有的公司广泛使用,并且对他们的应用程序具有良好的行业吸引力,从而使得正则表达式越来越受重视。今天我们就一起来学习下Python正则表达式。为什么要使用正则表达式。为了回答这个问题,我们先来看看我们面临的各种问题,而这些问题又可以通过使用正则表达式来解决。考虑以下场景:文末有一个包含大量数据的日志文件,从这个日志文件中,希望只获取日期和时间。乍一看,日志文件的可读性是很低的。在这种情况下,可以使用正则表达式来识别模式并轻松提取所需信

本文目录

    Python正则表达式的小抄

    正则表达式可用于搜索、编辑和操作文本。Python RegEx 被几乎所有的公司广泛使用,并且对他们的应用程序具有良好的行业吸引力,从而使得正则表达式越来越受重视。

    今天我们就一起来学习下 Python 正则表达式。

    为什么要使用正则表达式。

    为了回答这个问题,我们先来看看我们面临的各种问题,而这些问题又可以通过使用正则表达式来解决。

    考虑以下场景:

    文末有一个包含大量数据的日志文件,从这个日志文件中,希望只获取日期和时间。乍一看,日志文件的可读性是很低的。

    Python正则表达式的小抄


    在这种情况下,可以使用正则表达式来识别模式并轻松提取所需信息。

    考虑下一个场景:你是一名销售人员,有很多电子邮件地址,其中很多地址都是假的/无效的,看看下面的图片:

    Python正则表达式的小抄

    我们可以做的是使用正则表达式,可以验证电子邮件地址的格式并从真实 ID 中过滤掉虚假 ID。

    下一个场景与销售员示例的场景非常相似,考虑下图:

    Python正则表达式的小抄

    我们如何验证电话号码,然后根据原产国对其进行分类?

    每个正确的数字都会有一个特定的模式,可以通过使用正则表达式来跟踪和跟踪。

    接下来是另一个简单的场景:

    我们有一个学生数据库,其中包含姓名、年龄和地址等详细信息。考虑一下地区代码最初是 59006 但现在已更改为 59076 的情况,这种情况为每个学生手动更新此代码将非常耗时且过程非常漫长。

    基本上,为了使用正则表达式解决这些问题,我们首先从包含 pin 码的学生数据中找到一个特定的字符串,然后将它们全部替换为新字符串。

    什么是正则表达式

    正则表达式用于识别文本字符串中的搜索模式,它还有助于找出数据的正确性,甚至可以使用正则表达式进行查找、替换和格式化数据等操作。

    考虑以下示例:

    Python正则表达式的小抄

    在给定字符串的所有数据中,假设我们只需要城市,这可以以格式化的方式转换为仅包含名称和城市的字典。现在的问题是,我们能否确定一种模式来猜测名称和城市?此外我们也可以找出年龄,随着年龄的增长,这很容易,对吧?它只是一个整数。

    我们如何处理这个名字?如果你看一下这个模式,所有的名字都以大写字母开头。借助正则表达式,我们可以使用此方法识别姓名和年龄。

    我们可以使用下面的代码

    import re
    Nameage = '''
    Janice is 22 and Theon is 33
    Gabriel is 44 and Joey is 21
    '''
    ages = re.findall(r'd{1,3}', Nameage)
    names = re.findall(r'[A-Z][a-z]*',Nameage)
    ageDict = {}
    x = 0
    for eachname in names
    ageDict[eachname] = ages[x]
    x+=1
    print(ageDict)

    Output:

    {'Janice': '22', 'Theon': '33', 'Gabriel': '44', 'Joey': '21'}

    正则表达式几个示例:

    可以使用正则表达式执行许多操作。在这里,我列出了一些帮助更好地理解正则表达式的用法非常重要的内容。

    让我们首先检查如何在字符串中找到特定单词

    在字符串中查找一个单词

    import re
    if re.search("inform","we need to inform him with the latest information"):
    print("There is inform")

    我们在这里所做的一切都是为了搜索单词 inform 是否存在于我们的搜索字符串中。

    当然我们还可以优化以下代码

    import re
    allinform = re.findall("inform","We need to inform him with the latest information!")
    for i in allinform:
    print(i)

    在这里,在这种特殊情况下,将找到两次infor。一个来自inform,另一个来自information。

    如上所示,在正则表达式中查找单词就这么简单。

    接下来我们将了解如何使用正则表达式生成迭代器。

    生成迭代器

    生成迭代器是找出并目标字符串的开始和结束索引的简单过程。考虑以下示例:

    import re
    Str = "we need to inform him with the latest information"
    for i in re.finditer("inform.", Str
    locTuple = i.span()
    print(locTuple)

    对于找到的每个匹配项,都会打印开始和结束索引。当我们执行上述程序时,输出如下:

    (11, 18)
    (38, 45)

    接下来我们将检查如何使用正则表达式将单词与模式匹配。

    将单词与模式匹配

    考虑一个输入字符串,我们必须将某些单词与该字符串匹配。要详细说明,请查看以下示例代码:

    import re
    Str = "Sat, hat, mat, pat"
    allStr = re.findall("[shmp]at", Str)
    for i in allStr:
    print(i)

    字符串中有什么共同点?可以看到字母“a”和“t”在所有输入字符串中都很常见。代码中的 [shmp] 表示要查找的单词的首字母,因此,任何以字母 s、h、m 或 p 开头的子字符串都将被视为匹配,其中任何一个,并且最后必须跟在“at”后面。

    Output:

    hat
    mat
    pat

    接下来我们将检查如何使用正则表达式一次匹配一系列字符。

    匹配一系列字符范围

    我们希望输出第一个字母应该在 h 和 m 之间并且必须紧跟 at 的所有单词。看看下面的例子,我们应该得到的输出是 hat 和 mat

    import re
    Str = "sat, hat, mat, pat"
    someStr = re.findall("[h-m]at", Str)
    for i in someStr:
    print(i)

    Output:

    hat
    mat

    现在让我们稍微改变一下上面的程序以获得一个不同的结果

    import re
    Str = "sat, hat, mat, pat"
    someStr = re.findall("[^h-m]at", Str)
    for i in someStr:
    print(i)

    发现细微差别了吗,我们在正则表达式中添加了插入符号 (^),它的作用否定了它所遵循的任何效果。我们不会给出从 h 到 m 开始的所有内容的输出,而是会向我们展示除此之外的所有内容的输出。

    我们可以预期的输出是不以 h 和 m 之间的字母开头但最后仍然紧随其后的单词。Output:

    sat
    pat

    替换字符串:

    接下来,我们可以使用正则表达式检查另一个操作,其中我们将字符串中的一项替换为其他内容:

    import re
    Food = "hat rat mat pat"
    regex = re.compile("[r]at")
    Food = regex.sub("food", Food)
    print(Food)

    在上面的示例中,单词 rat 被替换为单词 food。正则表达式的替代方法就是利用这种情况,它也有各种各样的实际用例。Output:

    hat food mat pat

    反斜杠问题

    import re
    randstr = "Here is Edureka"
    print(randstr)

    Output:

    Here is Edureka

    这就是反斜杠问题,其中一个斜线从输出中消失了,这个特殊问题可以使用正则表达式来解决。

    import re
    randstr = "Here is Edureka"
    print(re.search(r"Edureka", randstr))

    Output:

    这就是使用正则表达式解决反斜杠问题的简单方法。

    匹配单个字符

    使用正则表达式可以轻松地单独匹配字符串中的单个字符

    import re
    randstr = "12345"
    print("Matches: ", len(re.findall("d{5}", randstr)))

    Output:

    Matches: 1

    删除换行符

    我们可以在 Python 中使用正则表达式轻松删除换行符

    import re
    randstr = '''
    You Never
    Walk Alone
    Liverpool FC
    '''
    print(randstr)
    regex = re.compile("
    ")
    randstr = regex.sub(" ", randstr)
    print(randstr)

    Output:

    You Never
    Walk Alone
    Liverpool FC
    You Never Walk Alone Liverpool FC

    可以从上面的输出中看到,新行已被空格替换,并且输出打印在一行上。

    还可以使用许多其他东西,具体取决于要替换字符串的内容

    : Backspace
    : Formfeed
    : Carriage Return
    : Tab
    : Vertical Tab

    可以使用如下代码

    import re
    randstr = "12345"
    print("Matches:", len(re.findall("d", randstr)))

    Output:

    Matches: 5

    从上面的输出可以看出,d 匹配字符串中存在的整数。但是,如果我们用 D 替换它,它将匹配除整数之外的所有内容,与 d 完全相反。

    接下来我们了解一些在 Python 中使用正则表达式的重要实际例子。

    正则表达式的实际例子

    我们将检查使用最为广泛的 3 个主要用例

    •  电话号码验证
    •  电子邮件地址验证
    •  网页抓取

    电话号码验证

    需要在任何相关场景中轻松验证电话号码

    考虑以下电话号码:

    • 444-122-1234
    • 123-122-78999
    • 111-123-23
    • 67-7890-2019

    电话号码的一般格式如下:

    • 以 3 位数字和“-”符号开头
    • 3 个中间数字和“-”号
    • 最后4位数

    我们将在下面的示例中使用 w,请注意 w = [a-zA-Z0-9_]

    import re
    phn = "412-555-1212"
    if re.search("w{3}-w{3}-w{4}", phn):
    print("Valid phone number")

    Output:

    Valid phone number

    电子邮件验证

    在任何情况下验证电子邮件地址的有效性。

    考虑以下电子邮件地址示例:

    • Anirudh@gmail.com
    • Anirudh@com
    • AC.com
    • 123 @.com

    我们只需一眼就可以从无效的邮件 ID 中识别出有效的邮件 ID,但是当我们的程序为我们做这件事时,却并没有那么容易,但是使用正则,就非常简单了。

    指导思路,所有电子邮件地址应包括:

    • 1 到 20 个小写和/或大写字母、数字以及 . _ % +
    • 一个@符号
    •  2 到 20 个小写和大写字母、数字和加号
    • 一个点号
    • 2 到 3 个小写和大写字母

    import re
    email = "ac@aol.com md@.com @seo.com dc@.com"
    print("Email Matches: ", len(re.findall("[w._%+-]{1,20}@[w.-]{2,20}.[A-Za-z]{2,3}", email)))

    Output:

    Email Matches: 1

    从上面的输出可以看出,我们输入的 4 封电子邮件中有一封有效的邮件。

    这基本上证明了使用正则表达式并实际使用它们是多么简单和高效。

    网页抓取

    从网站上删除所有电话号码以满足需求。

    要了解网络抓取,请查看下图:

    Python正则表达式的小抄

    我们已经知道,一个网站将由多个网页组成,我们需要从这些页面中抓取一些信息。

    网页抓取主要用于从网站中提取信息,可以将提取的信息以 XML、CSV 甚至 MySQL 数据库的形式保存,这可以通过使用 Python 正则表达式轻松实现。

    import urllib.request
    from re import findall
    url = "http://www.summet.com/dmsi/html/codesamples/addresses.html"
    response = urllib.request.urlopen(url)
    html = response.read()
    htmlStr = html.decode()
    pdata = findall("(d{3}) d{3}-d{4}", htmlStr)
    for item in pdata:
    print(item)

    Output:

    (257) 563-7401
    (372) 587-2335
    (786) 713-8616
    (793) 151-6230
    (492) 709-6392
    (654) 393-5734
    (404) 960-3807
    (314) 244-6306
    (947) 278-5929
    (684) 579-1879
    (389) 737-2852
    ...

    我们首先是通过导入执行网络抓取所需的包,最终结果包括作为使用正则表达式完成网络抓取的结果而提取的电话号码。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python 正则表达式
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。