13.2 常用正则表达式模式

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏:

工💗重💗hao💗:野老杂谈

⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.

⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。

⭐️ 全流程数据技术实战指南:全面讲解从数据采集到数据可视化的整个过程,掌握构建现代化数据平台和数据仓库的核心技术和方法。

⭐️ 构建全面的数据指标体系:通过深入的理论解析、详细的实操步骤和丰富的案例分析,为读者提供系统化的指导,帮助他们构建和应用数据指标体系,提升数据驱动的决策水平。

⭐️《遇见Python:初识、了解与热恋》 :涵盖了Python学习的基础知识、进阶技巧和实际应用案例,帮助读者从零开始逐步掌握Python的各个方面,并最终能够进行项目开发和解决实际问题。

摘要

正则表达式听起来像是一种神秘的魔法,但它其实是处理文本的强大工具。本文将通过幽默生动的例子,带你认识一些常用的正则表达式模式。从简单的匹配单词到复杂的捕获组,正则表达式将不再让你头疼。通过这篇文章,你将掌握正则表达式的基本模式,并能够在实际项目中灵活运用。


1. 正则表达式简介

说到正则表达式,你的第一反应可能是"这是什么天书?"其实,正则表达式(regular expressions)是一种用来匹配字符串的模式,简单来说,它就像一个超级强大的搜索工具,能够帮你在一堆文本中快速找到你需要的内容。

想象一下,你在海边寻找一颗特别的贝壳,而正则表达式就是那个能够过滤掉所有其他贝壳的神奇筛子,直接帮你找到你想要的那颗。

Python 中,我们使用 re 模块来处理正则表达式。首先,让我们来看看如何导入这个模块并写一个简单的正则表达式:

python 复制代码
import re

text = "Hello, world!"
pattern = r"world"
match = re.search(pattern, text)

if match:
    print("Found:", match.group())
else:
    print("Not found")

在这个例子中,我们创建了一个模式 world,然后在字符串 Hello, world! 中搜索它。结果显然是"找到了!"。

2. 字符匹配

正则表达式最基础的功能就是匹配字符。理解字符匹配是掌握正则表达式的第一步。

单字符匹配

让我们从最简单的单字符匹配开始。想象一下你在超市里寻找苹果,正则表达式可以帮你精确定位它们。

比如,你想找一个包含字母"a"的单词,可以用以下正则表达式:

python 复制代码
pattern = r"a"
text = "apple"
match = re.search(pattern, text)

if match:
    print("Found:", match.group())
字符集合

有时,我们需要匹配一组字符中的任意一个。这就好比你在找水果,不仅仅是苹果,香蕉、橙子也都可以。

我们可以使用 [] 来定义字符集合,比如:

python 复制代码
pattern = r"[aeiou]"
text = "banana"
match = re.search(pattern, text)

if match:
    print("Found vowel:", match.group())
排除字符集合

如果你不喜欢某些水果,比如葡萄干,你可以通过排除字符集合来避开它们:

python 复制代码
pattern = r"[^aeiou]"
text = "grape"
matches = re.findall(pattern, text)

print("Consonants:", matches)

3. 重复匹配

字符匹配是很有用,但有时你需要匹配多个字符或重复的字符。这时,正则表达式的重复匹配符号就派上用场了。

*+?

这些符号分别表示"零次或多次"、"一次或多次"以及"零次或一次"匹配。

举个例子,假设你要找一个"a"后面跟着任意数量的"b"的字符串:

python 复制代码
pattern = r"ab*"
text = "abbb"
match = re.search(pattern, text)

if match:
    print("Match found:", match.group())
{n,m} 精确匹配

如果你需要更精确的控制重复次数,{n,m} 是你的好帮手。它表示匹配前一个字符至少 n 次,至多 m 次。

python 复制代码
pattern = r"a{2,4}"
text = "aaaaa"
matches = re.findall(pattern, text)

print("Matches:", matches)

4. 边界匹配

正则表达式还可以匹配特定的位置,比如单词的边界或行的开头和结尾。

单词边界 \b

想要找到单词的确切位置?\b 就是你需要的。

python 复制代码
pattern = r"\bword\b"
text = "a word in a sentence"
match = re.search(pattern, text)

if match:
    print("Exact word found:", match.group())
行首 ^ 和行尾 $

如果你想找到某行的开头或结尾,使用 ^$ 是最简单的方法。

python 复制代码
pattern = r"^Hello"
text = "Hello, world!"
match = re.search(pattern, text)

if match:
    print("Starts with Hello")

5. 捕获组与反向引用

捕获组允许你在正则表达式中对一部分内容进行分组,以便在后续操作中使用。

python 复制代码
pattern = r"(hello) (world)"
text = "hello world"
match = re.search(pattern, text)

if match:
    print("Group 1:", match.group(1))
    print("Group 2:", match.group(2))

6. 常见正则表达式模式示例

匹配邮箱地址
python 复制代码
pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
text = "example@example.com"
match = re.search(pattern, text)

if match:
    print("Valid email:", match.group())
匹配电话号码
python 复制代码
pattern = r"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b"
text = "123-456-7890"
match = re.search(pattern, text)

if match:
    print("Valid phone number:", match.group())
匹配URL
python 复制代码
pattern = r"https?://[a-zA-Z0-9.-]+(?:/[\w.-]*)*"
text = "https://www.example.com"
match = re.search(pattern, text)

if match:
    print("Valid URL:", match.group())
匹配日期格式
python 复制代码
pattern = r"\b\d{4}-\d{2}-\d{2}\b"
text = "2024-08-09"
match = re.search(pattern, text)

if match:
    print("Valid date:", match.group())

7. 总结

正则表达式可能看起来复杂,但只要你掌握了基本模式,就会发现它是个非常有用的工具。本文介绍了一些常见的正则表达式模式,它们能帮助你在处理文本时事半功倍。下一次当你面对一堆数据需要筛选时,不妨试试用正则表达式,你会惊讶于它的强大。


标签
  • 正则表达式
  • Python
  • 文本处理
  • 编程基础
  • 数据处理
相关推荐
databook13 分钟前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar1 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户8356290780512 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_2 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机8 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机9 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机9 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机9 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i10 小时前
drf初步梳理
python·django
每日AI新事件10 小时前
python的异步函数
python