下面是Python的正则表达式模块re的完整攻略。
简介
Python的re(Regular Expression)模块提供了正则表达式操作的功能。正则表达式是一种处理字符串的方式,它可以用于搜索、替换和分割字符串。正则表达式是由普通字符和特殊字符组成的模式,匹配模式所定义的字符串。Python的re模块提供了处理正则表达式的功能,能够方便地实现字符串的匹配、搜索、替换和分割操作。
基本用法
Python的re模块主要包含以下常用方法:
re.search(pattern, string, flags=0)
re.match(pattern, string, flags=0)
re.findall(pattern, string, flags=0)
re.sub(pattern, repl, string)
re.split(pattern, string, maxsplit=0, flags=0)
其中,re.search()
函数在字符串中搜索匹配正则表达式的第一个位置,并返回相应的匹配对象;re.match()
则尝试从字符串的开头开始匹配正则表达式,并返回相应的匹配对象;re.findall()
在字符串中查找所有匹配正则表达式的字符串,并返回一个列表;re.sub()
用指定的字符串替换字符串中所有匹配正则表达式的子串;re.split()
根据正则表达式分割字符串,并将分割完毕的字符串存入列表中返回。
这些函数在使用时需要传入一个正则表达式作为pattern
参数。
语法
正则表达式由普通字符和特殊字符组成,其中特殊字符具有一定的含义。使用正则表达式时需要熟悉这些特殊字符的含义。
普通字符
普通字符是指除了特殊字符之外的所有字符,包括大小写字母、数字、标点符号和空格等。普通字符在正则表达式中的匹配和它们在字符串中的出现一致。
例如,若使用正则表达式abc
,则会匹配所有包含连续字母abc的字符串,如abc
、abcd
、aabc
、aabbc
等。
特殊字符
特殊字符在正则表达式中具有特殊的意义,它们可以用来匹配特定的字符类、字符重复、位置标记等内容。
常见的特殊字符包括:
- 字符类:用于匹配一组字符中的任意一个字符。
[...]
表示匹配其中任意一个字符。例如,[abc]
可以匹配字符a、b或c;[^...]
表示匹配其中任意一个不是字符组中所列字符的字符。例如,[^abc]
可以匹配任意一个不是字符a、b或c的字符;\d
可以匹配任何数字(0-9);\D
可以匹配任何非数字字符;\w
可以匹配任何字母、数字或下划线字符;\W
可以匹配任何非字母、数字或下划线字符;\s
可以匹配任何空白字符(包括空格、制表符、换行符等);\S
可以匹配任何非空白字符。- 字符重复:用于匹配字符重复出现的数量。
*
表示前面的字符可以出现0次或任意多次;+
表示前面的字符可以出现1次或任意多次;?
表示前面的字符可以出现0次或1次;{m}
表示前面的字符必须出现m次;{m, n}
表示前面的字符必须出现m到n次。- 位置标记:用于指定匹配字符的位置。
^
表示从行首开始匹配;$
表示从行尾开始匹配;\b
表示匹配单词边界;\B
表示匹配非单词边界。
示例
下面给出两个正则表达式的示例。
示例1:匹配网址
我们可以针对一些格式化明确的字符串,使用正则表达式来进行分析和抓取。比如我们可以构造一个正则表达式来匹配URL地址:
import re
# 定义正则表达式
pattern = r'^https?://[\w\.-]+/\S*$'
# 测试字符串
test_str1 = 'https://www.baidu.com/index.html'
test_str2 = 'http://www.example.com/path/to/page'
# 进行匹配
if re.match(pattern, test_str1):
print(f"{test_str1}匹配成功")
else:
print(f"{test_str1}匹配失败")
if re.match(pattern, test_str2):
print(f"{test_str2}匹配成功")
else:
print(f"{test_str2}匹配失败")
首先我们使用 ^
表示行首开始匹配,然后使用 https?://
匹配以 http://
或 https://
开头的网址。接着使用 [\w\.-]+
匹配网址中的主机名。\w
表示匹配任何字母、数字或下划线字符,点和减号表示主机名可以包含点和减号。最后使用 /\S*$
匹配网址中的路径和查询字符串。\S*
匹配任何非空白字符,$
表示从行尾开始匹配。
测试字符串 test_str1
和 test_str2
分别符合和不符合正则表达式的规则,通过 re.match()
函数可以判断是否匹配成功。
示例2:数量匹配
正则表达式中的重复字符可以指定要匹配的字符数量,例如:
import re
# 定义正则表达式
pattern = r'Python\s+rocks!'
# 测试字符串
test_str1 = 'Python rocks!'
test_str2 = 'Python rocks!'
# 进行匹配
if re.search(pattern, test_str1):
print(f"{test_str1}匹配成功")
else:
print(f"{test_str1}匹配失败")
if re.search(pattern, test_str2):
print(f"{test_str2}匹配成功")
else:
print(f"{test_str2}匹配失败")
在正则表达式 Python\s+rocks!
中,\s+
表示匹配一个或多个空格字符。
测试字符串 test_str1
中有多个空格符,匹配成功;而 test_str2
中只有一个空格符,匹配失败。
总结
Python的re模块提供了强大的正则表达式操作功能,通过学习正则表达式的语法和常用方法,我们可以更好地进行字符串匹配、搜索、替换和分割等操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python re正则表达式模块(Regular Expression) - Python技术站