Python中的正则表达式(Regular Expressions,简称regex)是一种强大的字符串处理工具,它通过定义搜索模式来匹配、查找、替换或拆分字符串。正则表达式在文本处理、数据清洗和验证等领域非常有用。Python通过内置的re
模块提供了对正则表达式的支持。
基本使用
要使用正则表达式,首先需要导入re
模块:
import re
常用函数
-
re.match(pattern, string)
: 从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()
就返回None
。 -
re.search(pattern, string)
: 扫描整个字符串并返回第一个成功的匹配。 -
re.findall(pattern, string)
: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。 -
re.sub(pattern, repl, string)
: 替换字符串中的匹配项。
编写正则表达式
正则表达式使用特殊字符构造搜索模式。下面是一些基本的元字符和它们的含义:
-
.
: 匹配除了换行符以外的任意字符。 -
^
: 匹配字符串的开头。 -
$
: 匹配字符串的末尾。 -
*
: 匹配0个或多个表达式。 -
+
: 匹配1个或多个表达式。 -
?
: 匹配0个或1个前面的正则表达式定义的片段,非贪婪方式。 -
{m}
: 精确匹配m个前面表达式。 -
{m,n}
: 匹配m到n次所前面的表达式。 -
[]
: 用于表示一组字符,单独列出:[amk]
匹配 ‘a’,‘m’ 或 ‘k’。 -
|
: A|B,匹配A或B。 -
(...)
: 匹配括号内的表达式,也表示一个组。
特殊序列
-
\d
: 匹配任何十进制数;相当于类[0-9]
。 -
\D
: 匹配任何非数字字符;相当于类[^0-9]
。 -
\s
: 匹配任何空白字符;相当于类[ \t\n\r\f\v]
。 -
\S
: 匹配任何非空白字符;相当于类[^ \t\n\r\f\v]
。 -
\w
: 匹配任何字母数字字符;相当于类[a-zA-Z0-9_]
。 -
\W
: 匹配任何非字母数字字符;相当于类[^a-zA-Z0-9_]
。
编译正则表达式
为了提高效率,可以预编译正则表达式:
pattern = re.compile(r'\d+')
然后使用编译后的模式对象进行搜索、匹配等操作。
示例
import re
text = "Example with number 1234 and another number 5678."
number_pattern = r'\d+'
# 查找所有匹配项
numbers = re.findall(number_pattern, text)
print(numbers) # ['1234', '5678']
# 搜索并返回第一个匹配项
match = re.search(number_pattern, text)
if match:
print(match.group()) # 1234