您的位置:

Python正则表达式基础:用于字符串模式匹配和替换的语法

一、正则表达式基础语法

Python正则表达式是一种强大的工具,用于在文本中查找,识别和替换特定的模式。一个正则表达式可以包含字符,数字和特殊字符,如点、星号、加号、问号和括号等。正则表达式的基础语法包括:


import re

# 匹配单个字符
pattern = r"hello"
result1 = re.match(pattern, "hello world")
result2 = re.match(pattern, "hello cat")
result3 = re.match(pattern, "helloworld")
if result1:
    print(result1.group())
else:
    print("匹配失败")

以上代码展示了使用正则表达式匹配单个字符的基本语法,其中"r"表示字符串是raw string,即原始字符串,不需要转义特殊字符。

另外,正则表达式中的"."可以匹配除换行符外的任何一个字符,"*"表示匹配前面的字符0次或多次,"+"表示匹配前面的字符1次或多次,"?"表示匹配前面的字符0次或1次,"()"用于设置匹配的范围等等。

二、常用正则表达式实例

实际应用中,我们需要用到不同的正则表达式来匹配不同的模式。下面是一些常见的正则表达式实例:

1. 邮箱地址:


import re

pattern = r'\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*'
string = "myemail@example.com"
result = re.match(pattern, string)
if result:
    print("匹配成功")
else:
    print("匹配失败")

以上代码演示了使用正则表达式判断邮箱地址格式是否正确。其中,"\w"表示匹配字符或数字,"+"表示匹配前面的字符1次或多次,"()"和"*"用于设定匹配的范围。

2. IP地址:


import re

pattern = r'^((([0-9]{1,2})|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]{1,2})|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))$'
string = "192.168.0.1"
result = re.match(pattern, string)
if result:
    print("匹配成功")
else:
    print("匹配失败")

以上代码演示了使用正则表达式判断IP地址格式是否正确。其中"^"表示开始匹配,"$"表示结束匹配,"|"表示或,"[]"表示匹配字符的范围。

3. URL地址:


import re

pattern = r'^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+'
string = "https://www.example.com"
result = re.match(pattern, string)
if result:
    print("匹配成功")
else:
    print("匹配失败")

以上代码演示了使用正则表达式判断URL地址是否正确。其中":\/\/"表示转义字符"//","[]"和"+"表示匹配字符的范围和次数。

三、替换字符串中的模式

除了匹配字符串中的模式,正则表达式还可以替换字符串中的一部分模式。下面是一个简单的替换实例:


import re

pattern = r"(\d{4})-(\d{2})-(\d{2})"
string = "2022-10-10"
result = re.sub(pattern, r"\2/\3/\1", string)
print(result)

以上代码演示了使用正则表达式将日期格式(YYYY-MM-DD)中的"-"替换为"/",并且将"年月日"顺序换成"月日年"顺序。

四、总结

Python正则表达式是一种非常强大的工具,可以用于文本搜索、替换、过滤和分析等。本文介绍了正则表达式的基础语法,以及常见的实例和替换方法。学会了正则表达式的基础知识和常用方法,可以大大提高字符串操作的效率。