Python正则表达式

栏目: python 发布时间:2024-11-01

Python 的正则表达式(Regular Expressions)是一个强大的文本处理工具,它允许你使用特定的模式来匹配、查找、替换或分割字符串。Python 通过内置的 re 模块来支持正则表达式。下面是一个简单的 Python 正则表达式教程,涵盖基础到进阶的内容。

1. 导入 re 模块

在 Python 中使用正则表达式之前,首先需要导入 re 模块。

import re

2. 基本匹配

  • match() 方法:从字符串的起始位置匹配一个模式,如果匹配成功返回一个匹配对象,否则返回 None。
pattern = re.compile(r'hello')
match = pattern.match('hello world')
if match:
    print("Match found:", match.group())
else:
    print("No match")
  • search() 方法:扫描整个字符串,查找第一个匹配项。
match = re.search(r'world', 'hello world')
if match:
    print("Match found:", match.group())
else:
    print("No match")

3. 匹配多个字符

  • **.**:匹配除换行符以外的任意字符。
  • *****:匹配前面的子表达式零次或多次。
  • **+**:匹配前面的子表达式一次或多次。
  • **?**:匹配前面的子表达式零次或一次。
  • **{n}**:n 是一个非负整数。匹配确定的 n 次。
  • **{n,}**:n 是一个非负整数。至少匹配 n 次。
  • **{n,m}**:m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次。

4. 边界匹配

  • **^**:匹配输入字符串的开始位置。
  • **$**:匹配输入字符串的结束位置。

5. 字符集

  • **[abc]**:匹配方括号中的任意字符。
  • **[^abc]**:匹配除了方括号中字符的任意字符。
  • **[a-z]**:匹配任何小写字母。
  • **[A-Z]**:匹配任何大写字母。
  • **[0-9]**:匹配任何数字。
  • **\d**:等价于 [0-9]
  • **\D**:等价于 [^0-9],匹配任何非数字字符。
  • **\w**:匹配任何字母数字字符,等价于 [a-zA-Z0-9_]
  • **\W**:匹配任何非字母数字字符,等价于 [^a-zA-Z0-9_]
  • **\s**:匹配任何空白字符,包括空格、制表符、换页符等。
  • **\S**:匹配任何非空白字符。

6. 分组和捕获

  • **()**:用于分组和捕获匹配的文本。
match = re.search(r'(\b\w+)\s(\b\w+)', 'hello world')
if match:
    print(match.group(1), match.group(2))

7. 替换和分割

  • sub() 方法:用于替换字符串中的匹配项。
new_string = re.sub(r'\d+', 'NUMBER', 'hello 123 world 456')
print(new_string)
  • split() 方法:根据匹配进行分割字符串。
words = re.split(r'\s+', 'hello    world')
print(words)

8. 编译正则表达式

为了提高效率,可以使用 re.compile() 编译一个正则表达式对象,然后使用该对象的方法。

pattern = re.compile(r'\bfoo\b')

9. 标志

正则表达式可以指定一些标志来改变其工作方式,如 re.IGNORECASE 忽略大小写,re.MULTILINE 允许多行模式等。

match = re.search(r'^foo', 'foo\nbar\nfoo', re.MULTILINE)
if match:
    print("Match found:", match.group())

这个教程提供了 Python 正则表达式的基础和进阶内容。掌握这些内容后,你将能够高效地处理字符串匹配、查找、替换和分割等任务。

本文地址:https://www.tides.cn/p_python-re