【Python入门与进阶】Python 中的正则表达式

Python 中的正则表达式是通过内置模块 re 来实现的。正则表达式是一种用于模式匹配和文本处理的强大工具,可以用于查找、替换、分割字符串等操作。

基本用法

以下是 re 模块中一些常用的函数和方法:

  1. re.compile(pattern, flags=0):编译正则表达式模式,返回一个模式对象。
  2. re.search(pattern, string, flags=0):在整个字符串中搜索模式,返回第一个匹配对象。
  3. re.match(pattern, string, flags=0):从字符串的起始位置开始匹配模式,返回匹配对象。
  4. re.findall(pattern, string, flags=0):返回字符串中所有非重叠匹配的列表。
  5. re.finditer(pattern, string, flags=0):返回字符串中所有非重叠匹配的迭代器。
  6. re.sub(pattern, repl, string, count=0, flags=0):替换字符串中所有匹配模式的子串。
  7. re.split(pattern, string, maxsplit=0, flags=0):使用模式分割字符串,返回分割后的列表。

示例代码

以下是一些示例代码,展示了如何使用上述函数:

import re

# 定义一个正则表达式模式
pattern = r'\d+'  # 匹配一个或多个数字

# 在字符串中搜索
string = "The price is 100 dollars and 50 cents"
match = re.search(pattern, string)
if match:
    print(f"Found: {match.group()}")  # 输出: Found: 100

# 从字符串起始位置开始匹配
match = re.match(pattern, string)
if match:
    print(f"Match from start: {match.group()}")
else:
    print("No match from start")  # 输出: No match from start

# 查找所有匹配项
matches = re.findall(pattern, string)
print(f"All matches: {matches}")  # 输出: All matches: ['100', '50']

# 迭代匹配项
for match in re.finditer(pattern, string):
    print(f"Iter match: {match.group()}")  # 输出: Iter match: 100, Iter match: 50

# 替换匹配项
replaced_string = re.sub(pattern, '#', string)
print(f"Replaced string: {replaced_string}")  # 输出: Replaced string: The price is # dollars and # cents

# 分割字符串
split_string = re.split(r'\s+', string)  # 按空白字符分割
print(f"Split string: {split_string}")  # 输出: Split string: ['The', 'price', 'is', '100', 'dollars', 'and', '50', 'cents']

正则表达式语法

正则表达式的语法非常丰富,以下是一些常用的语法元素:

  • .:匹配任意单个字符(除换行符)。
  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。
  • *:匹配前一个字符零次或多次。
  • +:匹配前一个字符一次或多次。
  • ?:匹配前一个字符零次或一次。
  • {n}:匹配前一个字符恰好 n 次。
  • {n,}:匹配前一个字符至少 n 次。
  • {n,m}:匹配前一个字符至少 n 次,但是不超过 m 次。
  • []:匹配括号内的任意一个字符,例如 [abc] 匹配 abc
  • |:匹配左边或右边的表达式,例如 a|b 匹配 ab
  • ():捕获组,用于提取匹配的子串。

转义字符

有些字符在正则表达式中有特殊含义,如果你想匹配它们的字面意思,需要使用转义字符 \,例如:

  • \.:匹配字符 .
  • \\:匹配字符 \

模式修饰符

re 模块支持一些修饰符,用于改变正则表达式的行为:

  • re.IGNORECASE (re.I):忽略大小写。
  • re.MULTILINE (re.M):多行模式,^$ 匹配每一行的开始和结束。
  • re.DOTALL (re.S):让 . 匹配所有字符,包括换行符。
  • re.VERBOSE (re.X):忽略模式中的空白符和注释,以便提高可读性。
pattern = re.compile(r"""
    \d+     # 匹配一个或多个数字
    \s+     # 匹配一个或多个空白字符
    \w+     # 匹配一个或多个字母数字字符
""", re.VERBOSE)

掌握正则表达式可以大大提高处理字符串的效率和灵活性。

相关推荐

  1. Python入门Python 表达式

    2024-06-17 09:18:03       11 阅读
  2. [Python] Python使用表达式

    2024-06-17 09:18:03       32 阅读
  3. python表达式

    2024-06-17 09:18:03       47 阅读
  4. [Python] 表达式介绍

    2024-06-17 09:18:03       31 阅读
  5. Python 语法:表达式

    2024-06-17 09:18:03       28 阅读
  6. [Python] 表达式常见语法

    2024-06-17 09:18:03       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 09:18:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 09:18:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 09:18:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 09:18:03       20 阅读

热门阅读

  1. 代码随想录 day37|day38|day39

    2024-06-17 09:18:03       11 阅读
  2. Django 中间件

    2024-06-17 09:18:03       7 阅读
  3. C++240611

    C++240611

    2024-06-17 09:18:03      7 阅读
  4. Android 数据库

    2024-06-17 09:18:03       7 阅读
  5. grep binary file matches on text file

    2024-06-17 09:18:03       8 阅读
  6. 二叉树的遍历

    2024-06-17 09:18:03       11 阅读
  7. 查看 RK3568 Android SDK 版本的详细指南

    2024-06-17 09:18:03       9 阅读
  8. 网络安全实战:剖析ThinkPHP 5.1.X反序列化漏洞

    2024-06-17 09:18:03       7 阅读
  9. 超详细的描述UItralytics中的特征增强方法

    2024-06-17 09:18:03       8 阅读
  10. 【C/C++】实参与形参的区别

    2024-06-17 09:18:03       9 阅读
  11. Leetcode274. H 指数(简单易于理解)

    2024-06-17 09:18:03       8 阅读
  12. 跨服务器迁移 Redis 数据

    2024-06-17 09:18:03       8 阅读