Python 正则表达式初探

正则表达式是一种强大而灵活的模式匹配工具,常用来在文本中搜索、替换、提取符合特定模式的字符串。在 Python 中,使用 re 模块可以方便地操作正则表达式。

本文将介绍 Python 正则表达式的基本语法和常用方法,并通过具体示例演示其应用场景。

1. 正则表达式基础

正则表达式由一系列字符和特殊字符组成,用于描述匹配一类字符串的模式。下面是一些常用的正则表达式元字符和特殊字符:

  • .: 匹配除了换行符 \n 之外的任意一个字符。
  • *: 匹配前面的字符零次或多次。
  • +: 匹配前面的字符一次或多次。
  • ?: 匹配前面的字符零次或一次。
  • []: 匹配方括号内的任意一个字符。
  • |: 匹配 | 左右两边的任意一个表达式。
  • ^: 匹配字符串的开头。
  • $: 匹配字符串的结尾。
  • \: 转义字符。

使用正则表达式需要先编译成模式对象,然后使用模式对象进行匹配操作。编译正则表达式的函数是 re.compile(),而模式对象提供了一系列方法用于匹配、搜索和替换字符串。

2. 正则表达式的基本操作

2.1 匹配操作

使用 re.match() 函数可以从字符串的开头开始尝试匹配一个模式。下面是一个示例代码:

import re

pattern = re.compile(r'hello')
result = pattern.match('hello world')

if result:
    print('匹配成功')
else:
    print('匹配失败')

在上述代码中,我们使用 re.compile() 编译了一个模式对象,然后使用 pattern.match() 进行匹配操作。如果匹配成功,则返回一个匹配对象,否则返回 None

2.2 搜索操作

使用 re.search() 函数可以在字符串中搜索第一个匹配模式的位置。下面是一个示例代码:

import re

pattern = re.compile(r'\d+')
result = pattern.search('abc123def456')

if result:
    print('匹配成功')
    print('匹配到的字符串:', result.group())
else:
    print('匹配失败')

在上述代码中,我们使用 re.compile() 编译了一个模式对象,然后使用 pattern.search() 进行搜索操作。如果搜索成功,则返回一个匹配对象,否则返回 None

2.3 替换操作

使用 re.sub() 函数可以将字符串中所有匹配模式的子串替换为指定的字符串。下面是一个示例代码:

import re

pattern = re.compile(r'\d+')
result = pattern.sub('number', 'abc123def456')

print('替换后的字符串:', result)

在上述代码中,我们使用 re.compile() 编译了一个模式对象,然后使用 pattern.sub() 进行替换操作。该函数的第一个参数是替换后的字符串,第二个参数是要被匹配和替换的字符串。

3. 正则表达式的高级用法

Python 正则表达式提供了更多的高级用法,包括分组、贪婪与非贪婪匹配、预搜索等。下面将介绍其中的一些常用技巧。

3.1 分组

使用 () 可以将一部分正则表达式组合成一个整体,从而对其进行分组匹配。下面是一个示例代码:

import re

pattern = re.compile(r'(\d+)(\w+)')
result = pattern.match('123abc')

if result:
    print('匹配成功')
    print('整体匹配结果:', result.group())
    print('第一个分组匹配结果:', result.group(1))
    print('第二个分组匹配结果:', result.group(2))
else:
    print('匹配失败')