掌握Python正则表达式:从新手到专家的完全指南

发表时间: 2023-10-25 23:21

今天我们要揭开Python中正则表达式的神秘面纱,带大家从0到1,再从1到100,领略其强大魅力!

1. 什么是正则表达式?

正则表达式,简称为regex或RE,是用来匹配字符串的一种强大工具。想象一下,你的手中有一把“魔法剪刀”,它可以精确地从一大堆文字中裁剪出你想要的信息。正则表达式就是那把“魔法剪刀”。

2. Python中的正则模块:re

要在Python中使用正则表达式,我们需要先引入re模块。如此简单:

import re

3. 常用的正则表达式方法

  • re.match(): 从字符串起始部分匹配模式。
  • re.search(): 在整个字符串中搜索模式。
  • re.findall(): 返回字符串中所有与模式匹配的所有结果。
  • re.finditer(): 返回与模式匹配的所有结果的迭代器。
  • re.sub(): 用于替换字符串中的匹配项。

4. 常见的正则表达式符号

  • . : 匹配任何字符(除了换行符)。
  • ^ : 匹配字符串的开始。
  • $ : 匹配字符串的结束。
  • * : 匹配前一个字符0次或无限次。
  • + : 匹配前一个字符1次或无限次。
  • ? : 匹配前一个字符0次或1次。
  • \d: 匹配数字
  • \D: 匹配非数字。
  • \w: 匹配单词字符(字母、数字或下划线)。
  • \W: 匹配非单词字符。

...还有许多其他符号,这里只是冰山一角!

5. 小试牛刀:验证邮箱格式

现在,我们使用正则表达式来验证一个邮箱地址是否合法。

email_pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}"

if re.match(email_pattern, "example@email.com"):

print("有效的邮箱地址!")

else:

print("无效的邮箱地址!")

6. 分组与捕获

正则表达式中的分组可以让我们捕获字符串中的特定部分,使用()来进行分组。

例如,从"John: 25"中提取姓名和年龄:

text = "John: 25"

pattern = r"(\w+): (\d+)"

match = re.match(pattern, text)

if match:

print("Name:", match.group(1))

print("Age:", match.group(2))

7. 前瞻与后顾

这是高级技巧,允许我们在不捕获内容的情况下,匹配前后文的模式。

  • 前瞻:(?=...)
  • 负前瞻:(?!...)
  • 后顾:(?<=...)
  • 负后顾:(?<!...)

例如,匹配后面跟着数字的单词:

text = "apple3 but banana"

pattern = r"\w+(?=\d)"

print(re.findall(pattern, text)) # ['apple']

8. 总结与提高

正则表达式是一个深奥但极其有用的工具,特别是在数据处理和文本分析中。希望这篇文章帮助你打开了正则的大门,并激发了你深入学习的兴趣。

正则表达式的学习是一个长期的过程,不要被它的复杂性吓到,多练习,多思考,你会发现它真的很有趣!

下期预告:深入正则表达式的高级技巧,不见不散!