Python之正则表达式

1. 什么是正则表达式

正则表达式(Regular Expression)是用来处理字符串的一种工具,它可以实现字符串的匹配、查找、替换、分割等功能。

正则表达式是一种文本模式,包括普通字符和特殊字符(元字符)。特殊字符有特殊的含义,能够匹配字符串的特定部分。

2. Python中正则表达式模块——re

Python提供了re模块,可以用来支持正则表达式。re模块中提供了很多函数,包括:re.match(), re.search(), re.findall(), re.sub()等。

在使用re模块前,需要导入该模块。

import re

2.1 re.match()

re.match()函数用于匹配字符串的开头。如果字符串开头的字符与正则表达式相符,则匹配成功,否则匹配失败。

如果正则表达式中使用了^,就表示字符串的开头;re.match()函数就会尝试去匹配字符串的开头,如匹配成功,则返回一个匹配对象;否则返回None。

下面是一个例子:

import re

string = "hello, world!"

pattern = r"^hello"

result = re.match(pattern, string)

if result:

print("匹配成功")

else:

print("匹配失败")

输出结果为:

匹配成功

2.2 re.search()

re.search()函数用于在整个字符串中查找第一个匹配项。如果匹配成功,则返回一个匹配对象;否则返回None。

如果正则表达式中没有使用^,就表示在整个字符串中查找匹配项。

下面是一个例子:

import re

string = "hello, world! Hello, Python."

pattern = r"Hello"

result = re.search(pattern, string)

if result:

print("匹配成功")

else:

print("匹配失败")

输出结果为:

匹配成功

2.3 re.findall()

re.findall()函数用于在整个字符串中查找所有匹配项,并返回一个包含所有匹配项的列表。

下面是一个例子:

import re

string = "hello, world! Hello, Python."

pattern = r"[a-z]+"

result = re.findall(pattern, string)

print(result)

输出结果为:

['hello', 'world', 'ello', 'ython']

2.4 re.sub()

re.sub()函数用于替换字符串中的匹配项。

下面是一个例子:

import re

string = "hello, world! Hello, Python."

pattern = r"[a-zA-z]+"

result = re.sub(pattern, "Python", string)

print(result)

输出结果为:

Python, Python! Python, Python.

3. 正则表达式语法

正则表达式中有很多特殊字符和语法,下面列出一些常见的:

字符 描述
. 匹配任何单个字符,除了换行符。
^ 匹配字符串的开头。
$ 匹配字符串的结尾。
* 匹配前面的字符出现0次或多次。
+ 匹配前面的字符出现1次或多次。
? 匹配前面的字符出现0次或1次。
{n} 匹配前面的字符出现n次。
{n,} 匹配前面的字符至少出现n次。
{n,m} 匹配前面的字符出现n到m次。
[] 匹配方括号中的任意一个字符。
(|) 匹配括号中的任意一项,多个项用|分隔。

4. 案例

4.1 匹配手机号码

下面的例子演示如何用正则表达式匹配手机号码。

import re

phone_number = "13456789012"

pattern = r"^1[3|4|5|7|8][0-9]{9}$"

result = re.match(pattern, phone_number)

if result:

print("是合法的手机号码")

else:

print("不是合法的手机号码")

输出结果为:

是合法的手机号码

4.2 去掉字符串中的HTML标签

下面的例子演示如何用正则表达式去掉字符串中的HTML标签。

import re

html = "这是一个带有  空格和<b>加粗</b>标签的<br />html文本。"

pattern = r"<.*?>"

result = re.sub(pattern, "", html)

print(result)

输出结果为:

这是一个带有  空格和加粗标签的html文本。

4.3 匹配邮件地址

下面的例子演示如何用正则表达式匹配邮件地址。

import re

email = "user@example.com"

pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"

result = re.match(pattern, email)

if result:

print("是合法的邮件地址")

else:

print("不是合法的邮件地址")

输出结果为:

是合法的邮件地址

总结

本文介绍了Python中正则表达式模块re的基本用法、常见语法以及应用案例,正则表达式可以让我们在处理字符串时更加灵活、高效。

后端开发标签