Python 正则表达式入门


发布日期 : 2024-01-02 10:25:33 UTC

访问量: 10 次浏览

正则表达式(Regular Expression)是一种用来描述、匹配一系列字符串的方法。

简单来说,就是使用特殊的字符集合、表达式来匹配字符串。

比如,通常使用邮箱地址、电话号码等进行输入校验,就可以使用正则表达式进行匹配校验。

基本语法

匹配单个字符

. 表示匹配任意一个字符,比如:

import re

pattern = r'a.c'
print(re.findall(pattern, 'abc')) # ['abc']
print(re.findall(pattern, 'axc')) # ['axc']
print(re.findall(pattern, 'a1c')) # ['a1c']

[] 表示匹配一组字符,比如:

import re

pattern = r'[abc]'
print(re.findall(pattern, 'a1c')) # ['a', 'c']

匹配多个字符

* 表示匹配任意个字符(至少 0 个),比如:

import re

pattern = r'ab*c'
print(re.findall(pattern, 'ac')) # ['ac']
print(re.findall(pattern, 'abc')) # ['abc']
print(re.findall(pattern, 'abbbc')) # ['abbbc']

+ 表示匹配一个或多个字符(至少 1 个)

import re

pattern = r'ab+c'
print(re.findall(pattern, 'ac')) # []
print(re.findall(pattern, 'abc')) # ['abc']
print(re.findall(pattern, 'abbbc')) # ['abbbc']

? 表示匹配零个或一个字符

import re

pattern = r'ab?c'
print(re.findall(pattern, 'ac')) # ['ac']
print(re.findall(pattern, 'abc')) # ['abc']
print(re.findall(pattern, 'abbc')) # []

匹配开头和结尾

^ 表示匹配开头,比如:

import re

pattern = r'^a'
print(re.findall(pattern, 'abc')) # ['a']
print(re.findall(pattern, 'bbc')) # []

$ 表示匹配结尾,比如:

import re

pattern = r'c$'
print(re.findall(pattern, 'abc')) # ['c']
print(re.findall(pattern, 'cba')) # []

高级语法

分组

使用括号来进行分组,比如:

import re

pattern = r'(a.c)\1'
print(re.findall(pattern, 'abcabc')) # ['abc']

这里使用 \1 表示引用第一个分组。

重复

{m} 表示重复 m 次,比如:

import re

pattern = r'ab{2}c'
print(re.findall(pattern, 'ac')) # []
print(re.findall(pattern, 'abc')) # []
print(re.findall(pattern, 'abbc')) # ['abbc']
print(re.findall(pattern, 'abbbbc')) # []

{m, n} 表示重复 m 到 n 次,比如:

import re

pattern = r'ab{2,3}c'
print(re.findall(pattern, 'ac')) # []
print(re.findall(pattern, 'abc')) # []
print(re.findall(pattern, 'abbc')) # ['abbc']
print(re.findall(pattern, 'abbbbc')) # []

{m,} 表示重复至少 m 次,比如:

import re

pattern = r'ab{2,}c'
print(re.findall(pattern, 'ac')) # []
print(re.findall(pattern, 'abc')) # []
print(re.findall(pattern, 'abbc')) # ['abbc']
print(re.findall(pattern, 'abbbbc')) # ['abbbbc']

特殊字符

\d 匹配数字,比如:

import re

pattern = r'\d+'
print(re.findall(pattern, 'abc123')) # ['123']

\w 匹配字母、数字、下划线,比如:

import re

pattern = r'\w+'
print(re.findall(pattern, 'abc_123')) # ['abc_123']

\s 匹配空白字符,比如:

import re

pattern = r'\s+'
print(re.findall(pattern, 'abc 123')) # [' ']

. 匹配除换行符 \n 之外的任意字符,比如:

import re

pattern = r'.+'
print(re.findall(pattern, 'abc\n123')) # ['abc', '123']

使用 | 来表示或,比如:

import re

pattern = r'good|bad'
print(re.findall(pattern, 'good morning')) # ['good']
print(re.findall(pattern, 'bad weather')) # ['bad']

结论

正则表达式是一种强大的匹配字符串的方法,虽然语法复杂,但是一旦掌握,就可以轻松实现各种字符串匹配的功能。
在实际开发中,我们可以通过正则表达式来进行数据校验、数据提取等操作,提高开发效率。