Python 正则表达式

Python 正则表达式

什么是正则表达式

正则表达式(Regular Expression,通常缩写为“regex”或“regexp”)是一种用来描述、匹配一系列字符串的方法。

Python 中,正则表达式通常由 re 模块实现。

常用的正则表达式语法

匹配单个字符

.匹配任意字符,用[]匹配指定字符集合,用[^]匹配除了指定字符集合以外的任意字符。

示例代码:

import re

# 匹配任意字符
pattern1 = r'.'
str1 = '123'
match1 = re.match(pattern1, str1)
print(match1.group())    # 输出 1

# 匹配指定字符集合
pattern2 = r'[aeiou]'
str2 = 'hello'
match2 = re.search(pattern2, str2)
print(match2.group())    # 输出 e

# 匹配除了指定字符集合以外的任意字符
pattern3 = r'[^aeiou]'
str3 = 'hello'
match3 = re.search(pattern3, str3)
print(match3.group())    # 输出 h

匹配重复字符

*匹配前面的字符零次或多次,用+匹配前面的字符至少一次,用?匹配前面的字符零次或一次,用{n}匹配前面的字符恰好 n 次,用{m, n}匹配前面的字符 m 次至 n 次,用{m,}匹配前面的字符至少 m 次。

示例代码:

import re

# 匹配前面的字符零次或多次
pattern1 = r'a*b'
str1 = 'ab'
match1 = re.match(pattern1, str1)
print(match1.group())    # 输出 ab

# 匹配前面的字符至少一次
pattern2 = r'a+b'
str2 = 'ab'
match2 = re.match(pattern2, str2)
print(match2.group())    # 输出 ab

# 匹配前面的字符零次或一次
pattern3 = r'a?b'
str3 = 'ab'
match3 = re.match(pattern3, str3)
print(match3.group())    # 输出 ab

# 匹配前面的字符恰好 n 次
pattern4 = r'a{2}b'
str4 = 'aab'
match4 = re.match(pattern4, str4)
print(match4.group())    # 输出 aab

# 匹配前面的字符 m 次至 n 次
pattern5 = r'a{2,3}b'
str5 = 'aaab'
match5 = re.match(pattern5, str5)
print(match5.group())    # 输出 aaab

# 匹配前面的字符至少 m 次
pattern6 = r'a{2,}b'
str6 = 'aaaab'
match6 = re.match(pattern6, str6)
print(match6.group())    # 输出 aaaab

匹配位置

^匹配字符串开头,用$匹配字符串结尾,用\b匹配单词边界,用\B匹配非单词边界。

示例代码:

import re

# 匹配字符串开头
pattern1 = r'^he'
str1 = 'hello'
match1 = re.match(pattern1, str1)
print(match1.group())    # 输出 he

# 匹配字符串结尾
pattern2 = r'lo$'
str2 = 'hello'
match2 = re.search(pattern2, str2)
print(match2.group())    # 输出 lo

# 匹配单词边界
pattern3 = r'\bhe'
str3 = 'hello world'
match3 = re.search(pattern3, str3)
print(match3.group())    # 输出 he

# 匹配非单词边界
pattern4 = r'\Bhe'
str4 = 'hello world'
match4 = re.search(pattern4, str4)
print(match4.group())    # 输出 he

在 Python 中使用正则表达式

Python 中,使用正则表达式主要使用 re 模块。

从字符串中查找匹配项

使用 re.search() 方法从字符串中查找第一个匹配项。如果找到匹配项,则返回一个 Match 对象,否则返回 None

示例代码:

import re

pattern = r'hello'
str = 'world hello'
match = re.search(pattern, str)
print(match.group())    # 输出 hello

从字符串中查找所有匹配项

使用 re.findall() 方法从字符串中查找所有匹配项。如果找到匹配项,则返回一个由匹配项组成的列表,否则返回一个空列表。

示例代码:

import re

pattern = r'he'
str = 'hello world'
matches = re.findall(pattern, str)
print(matches)    # 输出 ['he']

替换字符串中的匹配项

使用 re.sub() 方法可以替换字符串中的匹配项。

示例代码:

import re

pattern = r'he'
str = 'hello world'
sub_str = 'li'
new_str = re.sub(pattern, sub_str, str)
print(new_str)    # 输出 llo world

分割字符串

使用 re.split() 方法可以将字符串根据正则表达式进行分割。

示例代码:

import re

pattern = r','
str = 'a,b,c'
new_str = re.split(pattern, str)
print(new_str)    # 输出 ['a', 'b', 'c']

结论

正则表达式不仅在 Python 中有广泛的应用,而且在其他编程语言中也是一种非常常用的工具。学习和掌握正则表达式可以让我们更加高效地进行字符串处理和文本分析。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程