Python---正则表达式

 

Python正则表达式入门

正则表达式是一种强大的文本匹配工具,它可以在文本中搜索、匹配和替换特定的字符串。Python内置了re模块,可以使用正则表达式进行文本处理和分析。本文将介绍Python正则表达式的基础知识和常用操作。

正则表达式语法

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

  • .:匹配任意字符。
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • *:匹配前面的字符0次或多次。
  • +:匹配前面的字符1次或多次。
  • ?:匹配前面的字符0次或1次。
  • {m}:匹配前面的字符m次。
  • {m,n}:匹配前面的字符m到n次。
  • []:匹配括号内的任意一个字符。
  • |:匹配两个或多个表达式中的任意一个。

正则表达式还可以使用一些特殊的字符类:

  • \d:匹配任意数字字符。
  • \D:匹配任意非数字字符。
  • \w:匹配任意字母、数字或下划线字符。
  • \W:匹配任意非字母、数字或下划线字符。
  • \s:匹配任意空白字符。
  • \S:匹配任意非空白字符。

re模块基本操作

在Python中,使用re模块进行正则表达式操作。以下是一些常用的re模块函数:

  • re.search(pattern, string):在字符串中查找匹配正则表达式的第一个位置。
  • re.match(pattern, string):从字符串开头开始匹配正则表达式。
  • re.findall(pattern, string):查找字符串中所有匹配正则表达式的子串。
  • re.sub(pattern, repl, string):使用指定的替换字符串替换字符串中所有匹配正则表达式的子串。

以下是一些示例代码:

import re

# 匹配单词
pattern = r'\b\w+\b'
string = 'Hello, world!'
result = re.findall(pattern, string)
print(result)  # ['Hello', 'world']

# 替换字符串
pattern = r'\d+'
string = 'I have 3 apples and 5 oranges.'
result = re.sub(pattern, 'X', string)
print(result)  # 'I have X apples and X oranges.'

正则表达式高级操作

正则表达式还可以进行更高级的操作,例如分组、零宽断言等。以下是一些示例代码:

import re

# 分组
pattern = r'(\w+),(\w+)'
string = 'John,Smith'
result = re.search(pattern, string)
print(result.group(1))  # 'John'
print(result.group(2))  # 'Smith'

# 零宽断言
pattern = r'(?<=\d{3})\w+'
string = '123abc456'
result = re.search(pattern, string)
print(result.group())  # 'abc'