正则表达式

正则表达式

什么是正则表达式?

正则表达式(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']

结论

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程