前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 小白的晋级之路 - 第十一部分:探索正则表达式的魔力

Python 小白的晋级之路 - 第十一部分:探索正则表达式的魔力

作者头像
剑指工控
发布2024-02-21 17:15:00
1570
发布2024-02-21 17:15:00
举报
文章被收录于专栏:剑指工控

1

引言:

在 Python 编程中,正则表达式是一种强大而灵活的工具,用于字符串匹配和处理。本文将介绍正则表达式的基础知识,包括正则表达式的语法和常用函数。我们将通过实例和练习题,帮助你更好地掌握正则表达式的使用方法。

2

正则表达式的语法:

正则表达式由一系列字符和特殊字符组成,用于描述和匹配字符串模式。下面是一些常用的正则表达式的语法:

2.1

普通字符:

  • 普通字符是指除了特殊字符之外的所有字符,例如字母、数字、标点符号等。它们在正则表达式中直接匹配对应的字符。
  • 示例:'hello' 匹配字符串中的 "hello"。

2.2

特殊字符:

  • 特殊字符包括一些有特殊含义的字符,需要通过转义字符 '\' 来匹配它们的字面值。常见的特殊字符有:'. ^ $ * + ? { } [ ] \ | ( )'。
  • 示例:'\.' 匹配字符串中的句号 "."

2.3

字符类:

  • 字符类用于匹配一组字符中的任意一个字符。将需要匹配的字符放在方括号 '[]' 内。
  • 示例:'[aeiou]' 匹配字符串中的元音字母。

2.4

量词:

  • 量词表示一个字符、字符类或子模式的出现次数。常见的量词有:'*' 表示零次或多次,'+' 表示一次或多次,'?' 表示零次或一次,'{m}' 表示恰好出现 m 次,'{m,}' 表示至少出现 m 次,'{m,n}' 表示出现次数在 m 和 n 之间。
  • 示例:'a{2,4}' 匹配字符串中连续出现 2 到 4 个 "a" 的子串。

3

常用的正则表达式函数:

Python 提供了 re 模块来处理正则表达式。下面是一些常用的正则表达式函数:

3.1

match()函数:

match()函数用于尝试从字符串的起始位置匹配一个模式,如果匹配成功,返回一个匹配对象;如果匹配失败,返回 None。

示例:

代码语言:javascript
复制
     import re

     pattern = r"hello"
     string = "hello, world!"
     result = re.match(pattern, string)
     print(result)
     

运行结果:

代码语言:javascript
复制
   <re.Match object; span=(0, 5), match='hello'>
   

3.2

search()函数:

search()函数在字符串中搜索匹配模式的第一个位置,如果匹配成功,返回一个匹配对象;如果匹配失败,返回 None。

示例:

代码语言:javascript
复制
     import re

     pattern = r"world"
     string = "hello, world!"
     result = re.search(pattern, string)
     print(result)
     

运行结果:

代码语言:javascript
复制
   <re.Match object; span=(7, 12), match='world'>
   

3.3

findall()函数:

findall()函数用于在字符串中找到所有匹配模式的子串,并返回一个包含所有匹配子串的列表。

示例:

代码语言:javascript
复制
     import re

     pattern = r"\d+"
     string = "I have 2 apples and 3 oranges."
     result = re.findall(pattern, string)
     print(result)
     

运行结果:

代码语言:javascript
复制
   ['2', '3']
   

4

正则表达式的应用案例:

现在,让我们通过一个实例来加深对正则表达式的理解和应用。

假设我们有一个字符串列表,其中包含一些邮箱地址。我们想要从中提取出所有的邮箱地址,并将它们打印出来。我们可以使用正则表达式来实现:

代码语言:javascript
复制
import re

emails = [
    "alice@example.com",
    "bob@example.com",
    "john.doe@example.com",
    "jane.doe@example.com",
    "foo@bar",
    "baz@example",
]

pattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"

for email in emails:
    if re.match(pattern, email):
        print(email)

运行结果:

代码语言:javascript
复制
alice@example.com
bob@example.com
john.doe@example.com
jane.doe@example.com

通过正则表达式的匹配,我们成功提取出了具有正确格式的邮箱地址,并将它们打印出来。

课后练习题:

  1. 编写一个正则表达式,匹配所有的手机号码(例如:13712345678)。
  2. 编写一个正则表达式,匹配所有的身份证号码(18 位数字)。

答案和解析:

  1. 正则表达式:r"1\d{10}"解析:以数字 1 开头,后面跟着 10 位数字。
  2. 正则表达式:r"\d{17}[\dXx]"解析:17 位数字和一个最后一位是数字或大写字母"X"或小写字母"x"。

5

总结:

本文介绍了正则表达式在Python编程中的基础知识和常用函数。首先,我们学习了正则表达式的语法,包括普通字符、特殊字符、字符类和量词的用法。然后,我们介绍了Python中常用的正则表达式函数,包括match()、search()和findall()。最后,我们通过一个实例演示了正则表达式的应用,提取并打印出字符串列表中的邮箱地址。文章还提供了两个练习题,加深读者对正则表达式的认识。

通过本文的学习,读者可以掌握正则表达式的基础知识,并开始应用它们解决实际问题。如有疑问,可以随时在评论区提问。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 剑指工控 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档