python正则表达式re模块详细介绍

  • Post category:Python

Python正则表达式re模块详细介绍

正则表达式是一种用于匹配字符串的模式,Python中提供了re模块用于处理正则表达式。本文将介绍Python re模块的使用方法和常见的正则表达式语法。

基本操作

使用re模块的基本步骤如下:

  1. 导入re模块:import re
  2. 定义正则表达式:pattern = r'正则表达式'
  3. 使用正则表达式匹配字符串:re.match(pattern, string)

正则表达式语法

下面是一些常用的正则表达式语法:

字符匹配

表达式 匹配
. 匹配任何一个字符,换行符除外
\d 匹配数字
\D 匹配非数字
\s 匹配空白字符
\S 匹配非空白字符
\w 匹配任何字母数字字符
\W 匹配非字母数字字符

重复匹配

表达式 匹配
* 匹配前一个字符出现0次或多次
+ 匹配前一个字符出现1次或多次
? 匹配前一个字符出现0次或1次
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现m次到n次

分组匹配

使用括号将一组字符括起来,可以对这一组字符进行操作。

表达式 匹配
(…) 匹配括号内的表达式
(a|b) 匹配a或b
(?:…) 不保存分组匹配结果

示例说明

示例一

import re

text = 'my email is example@python.org'
pattern = r'([\w.-]+)@([\w.-]+)'
match = re.search(pattern, text)

print(match.group())  # 匹配整个表达式,结果为:'example@pythonorg'
print(match.group(1))  # 匹配第一个括号表达式,结果为:'example'
print(match.group(2))  # 匹配第二个括号表达式,结果为:'python.org'

上述示例中,正则表达式([\w.-]+)@([\w.-]+)用于匹配一个电子邮件地址。其中,\w匹配任何字母数字字符,.匹配任意单个字符,+匹配前面的字符出现一次或多次。

示例二

import re

text = '1234567890_abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ'
pattern = r'[a-z]+'
matches = re.findall(pattern, text)
print(matches)  # 匹配所有小写字母,结果为:['abcdefghijklmnopqrstuvwxyz']

text = '1234567890_abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ'
pattern = r'[a-zA-Z]+'
matches = re.findall(pattern, text)
print(matches)  # 匹配所有字母,结果为:['abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ']

上述示例中,正则表达式[a-z]+用于匹配所有小写字母,[a-zA-Z]+用于匹配所有字母。其中,[]用于匹配包含在中括号内的任意一个字符,+用于匹配前面的字符出现一次或多次,a-zA-Z分别匹配小写字母和大写字母。re.findall()用于返回所有匹配的子串。