Python正则表达式re模块详细介绍
正则表达式是一种用于匹配字符串的模式,Python中提供了re模块用于处理正则表达式。本文将介绍Python re模块的使用方法和常见的正则表达式语法。
基本操作
使用re模块的基本步骤如下:
- 导入re模块:
import re
- 定义正则表达式:
pattern = r'正则表达式'
- 使用正则表达式匹配字符串:
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-z
和A-Z
分别匹配小写字母和大写字母。re.findall()
用于返回所有匹配的子串。