Python 小白的晋级之路 - 第十一部分:探索正则表达式的魔力
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。
示例:
- import re
- pattern = r"hello"
- string = "hello, world!"
- result = re.match(pattern, string)
- print(result)
运行结果:
- <re.Match object; span=(0, 5), match='hello'>
3.2 search()函数:
search()函数在字符串中搜索匹配模式的第一个位置,如果匹配成功,返回一个匹配对象;如果匹配失败,返回 None。
示例:
- import re
- pattern = r"world"
- string = "hello, world!"
- result = re.search(pattern, string)
- print(result)
运行结果:
- <re.Match object; span=(7, 12), match='world'>
3.3 findall()函数:
findall()函数用于在字符串中找到所有匹配模式的子串,并返回一个包含所有匹配子串的列表。
示例:
- import re
- pattern = r"\d+"
- string = "I have 2 apples and 3 oranges."
- result = re.findall(pattern, string)
- print(result)
运行结果:
- ['2', '3']
4 正则表达式的应用案例:
现在,让我们通过一个实例来加深对正则表达式的理解和应用。
假设我们有一个字符串列表,其中包含一些邮箱地址。我们想要从中提取出所有的邮箱地址,并将它们打印出来。我们可以使用正则表达式来实现:
- 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)
运行结果:
通过正则表达式的匹配,我们成功提取出了具有正确格式的邮箱地址,并将它们打印出来。
课后练习题:
编写一个正则表达式,匹配所有的手机号码(例如:13712345678)。
编写一个正则表达式,匹配所有的身份证号码(18 位数字)。
答案和解析:
正则表达式:r"1\d{10}"解析:以数字 1 开头,后面跟着 10 位数字。
正则表达式:r"\d{17}[\dXx]"解析:17 位数字和一个最后一位是数字或大写字母"X"或小写字母"x"。
5 总结:
本文介绍了正则表达式在Python编程中的基础知识和常用函数。首先,我们学习了正则表达式的语法,包括普通字符、特殊字符、字符类和量词的用法。然后,我们介绍了Python中常用的正则表达式函数,包括match()、search()和findall()。最后,我们通过一个实例演示了正则表达式的应用,提取并打印出字符串列表中的邮箱地址。文章还提供了两个练习题,加深读者对正则表达式的认识。
通过本文的学习,读者可以掌握正则表达式的基础知识,并开始应用它们解决实际问题。如有疑问,可以随时在评论区提问。
往期回顾
Python 小白的晋级之路 - 第一部分:Python 的重要性和简洁的语法
Python 小白的晋级之路 - 第二部分:探索 Python 变量
Python 小白的晋级之路 - 第三部分:玩转 Python 字符串
Python 小白的晋级之路 - 第四部分:掌握 Python 列表
Python 小白的晋级之路 - 第五部分:驾驭 Python 元组
Python 小白的晋级之路 - 第六部分:Python 的 if 语句
Python 小白的晋级之路 - 第八部分:探秘 while 循环的精髓
Python 小白的晋级之路 - 第九部分:征服 for 循环的领域
Python 小白的晋级之路 - 第十部分:探索常用函数的奇妙世界
2024年02月