Python Re模块

使用Python的re模块进行正则表达式处理

Python的re模块提供了强大的正则表达式功能,用于字符串的查找、替换和拆分。本文将介绍re模块的基本用法,并通过示例代码展示其强大之处。

什么是正则表达式?

正则表达式是一种用于匹配字符串的模式。它可以用来验证输入、查找特定的字符串模式、替换文本等。re模块是Python中处理正则表达式的标准库。

导入re模块

在使用正则表达式之前,需要先导入re模块:

1
import re

基本函数介绍

re模块提供了几个核心函数来处理正则表达式:

  1. re.match(pattern, string, flags=0):从字符串的起始位置匹配一个模式。
  2. re.search(pattern, string, flags=0):在整个字符串中搜索模式。
  3. re.findall(pattern, string, flags=0):返回字符串中所有匹配模式的子串。
  4. re.finditer(pattern, string, flags=0):返回字符串中所有匹配模式的迭代器。
  5. re.sub(pattern, repl, string, count=0, flags=0):替换字符串中匹配模式的子串。
  6. re.split(pattern, string, maxsplit=0, flags=0):按照模式拆分字符串。
  7. re.compile(pattern, flags=0):编译一个正则表达式模式,返回一个Pattern对象,用于提高多次使用该模式时的效率。

常用模式符号

  • .:匹配任意单个字符(除换行符外)。
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • *:匹配前面的字符零次或多次。
  • +:匹配前面的字符一次或多次。
  • ?:匹配前面的字符零次或一次。
  • \d:匹配任何数字字符,相当于[0-9]
  • \w:匹配任何字母数字字符,相当于[a-zA-Z0-9_]
  • \s:匹配任何空白字符(空格、制表符、换行符等)。
  • []:匹配括号内的任意一个字符。
  • |:表示“或”操作,匹配符号两边的任意一个模式。

示例

匹配模式

1
2
3
4
5
6
7
8
9
10
11
12
13
import re

def match_example():
pattern = r'\d+' # 匹配一个或多个数字
string = "There are 123 apples and 45 oranges."
match = re.match(pattern, string)
if match:
print("Match found:", match.group())
else:
print("No match found")

if __name__ == "__main__":
match_example()

搜索模式

1
2
3
4
5
6
7
8
9
10
11
12
13
import re

def search_example():
pattern = r'\d+' # 匹配一个或多个数字
string = "There are 123 apples and 45 oranges."
search = re.search(pattern, string)
if search:
print("Search found:", search.group())
else:
print("No search found")

if __name__ == "__main__":
search_example()

查找所有匹配模式

1
2
3
4
5
6
7
8
9
10
import re

def findall_example():
pattern = r'\d+' # 匹配一个或多个数字
string = "There are 123 apples and 45 oranges."
matches = re.findall(pattern, string)
print("Findall matches:", matches)

if __name__ == "__main__":
findall_example()

替换匹配模式

1
2
3
4
5
6
7
8
9
10
import re

def sub_example():
pattern = r'\d+' # 匹配一个或多个数字
string = "There are 123 apples and 45 oranges."
result = re.sub(pattern, '#', string)
print("Sub result:", result)

if __name__ == "__main__":
test_sub_example()

拆分字符串

1
2
3
4
5
6
7
8
9
10
import re

def split_example():
pattern = r'\d+' # 匹配一个或多个数字
string = "There are 123 apples and 45 oranges."
result = re.split(pattern, string)
print("Split result:", result)

if __name__ == "__main__":
split_example()

编译正则表达式

使用re.compile可以将正则表达式编译成一个模式对象,以提高多次使用该模式的效率。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import re

def compile_example():
pattern = re.compile(r'\d+') # 编译一个匹配一个或多个数字的正则表达式
string = "There are 123 apples and 45 oranges."
match = pattern.match(string)
if match:
print("Match found:", match.group())
else:
print("No match found")

search = pattern.search(string)
if search:
print("Search found:", search.group())
else:
print("No search found")

matches = pattern.findall(string)
print("Findall matches:", matches)


if __name__ == "__main__":
compile_example()

Python Re模块
http://jiqingjiang.github.io/p/792e5600/
作者
Jiqing
发布于
2024年7月29日
许可协议