Python正则表达式入门
正则表达式是一种强大的文本匹配工具,它可以在文本中搜索、匹配和替换特定的字符串。Python内置了re模块,可以使用正则表达式进行文本处理和分析。本文将介绍Python正则表达式的基础知识和常用操作。
正则表达式语法
正则表达式由一系列字符和特殊字符组成,用于描述要匹配的文本模式。以下是一些常用的正则表达式元字符:
.
:匹配任意字符。^
:匹配字符串的开头。$
:匹配字符串的结尾。*
:匹配前面的字符0次或多次。+
:匹配前面的字符1次或多次。?
:匹配前面的字符0次或1次。{m}
:匹配前面的字符m次。{m,n}
:匹配前面的字符m到n次。[]
:匹配括号内的任意一个字符。|
:匹配两个或多个表达式中的任意一个。
正则表达式还可以使用一些特殊的字符类:
\d
:匹配任意数字字符。\D
:匹配任意非数字字符。\w
:匹配任意字母、数字或下划线字符。\W
:匹配任意非字母、数字或下划线字符。\s
:匹配任意空白字符。\S
:匹配任意非空白字符。
re模块基本操作
在Python中,使用re模块进行正则表达式操作。以下是一些常用的re模块函数:
re.search(pattern, string)
:在字符串中查找匹配正则表达式的第一个位置。re.match(pattern, string)
:从字符串开头开始匹配正则表达式。re.findall(pattern, string)
:查找字符串中所有匹配正则表达式的子串。re.sub(pattern, repl, string)
:使用指定的替换字符串替换字符串中所有匹配正则表达式的子串。
以下是一些示例代码:
import re
# 匹配单词
pattern = r'\b\w+\b'
string = 'Hello, world!'
result = re.findall(pattern, string)
print(result) # ['Hello', 'world']
# 替换字符串
pattern = r'\d+'
string = 'I have 3 apples and 5 oranges.'
result = re.sub(pattern, 'X', string)
print(result) # 'I have X apples and X oranges.'
正则表达式高级操作
正则表达式还可以进行更高级的操作,例如分组、零宽断言等。以下是一些示例代码:
import re
# 分组
pattern = r'(\w+),(\w+)'
string = 'John,Smith'
result = re.search(pattern, string)
print(result.group(1)) # 'John'
print(result.group(2)) # 'Smith'
# 零宽断言
pattern = r'(?<=\d{3})\w+'
string = '123abc456'
result = re.search(pattern, string)
print(result.group()) # 'abc'