正则表达式是一种强大的工具,用于处理字符串的匹配、搜索和替换操作。在Python中,我们可以使用内置的re模块来执行各种正则表达式操作。
1 基本用法
- re.match(pattern, string): 从字符串的开头匹配一个模式。返回match对象或None。
- re.search(pattern, string): 在整个字符串中搜索一个模式。返回match对象或None。
- re.fullmatch(pattern, string):匹配整个字符串。返回match对象或None。
- re.findall(pattern, string): 查找所有匹配的子字符串。返回列表。
- re.sub(pattern, replacement, string): 替换匹配的子字符串。
- re.subn(pattern, replacement, string):替换匹配的子字符串,返回一个元组(新字符串,替换个数)。
- re.split(pattern, string): 切割,返回列表。
2 正则表达式语法
. : 匹配任意字符,除了换行符。
*: 匹配前一个字符0次或多次。
+: 匹配前一个字符1次或多次。
?: 匹配前一个字符0次或1次。
[]: 匹配括号内的任意字符。
|: 匹配两个模式之一。
^: 匹配字符串的开头。
$: 匹配字符串的结尾。
3 示例
导入 re 模块
import re
3.1 匹配邮箱地址
pattern = r'\w+@\w+\.\w+'
email = 'john.doe@example.com'
if re.match(pattern, email):
print(f"{email} 是有效的邮箱地址")
else:
print(f"{email} 不是有效的邮箱地址")
3.2 查找所有数字
text = "Today is 2024-02-28."
numbers = re.findall(r'\d+', text)
print("找到的数字:", numbers)
4 扩展
4.1 字符串匹配
- \d: 匹配前一个数字。
- \D:匹配前一个非数字。
- \w:匹配前一个数字或字母或下划线。
- \W:匹配前一个非数字、字母、下划线。
- \s:匹配前一个空白字符(换行符、制表符、空格)。
- \S:匹配前一个非空白字符。
- \b:匹配单词边界。
- \B:匹配非单词边界
- re.I:不区分大小写。
- re.M:多行模式,如果有换行符。
4.2 分组
分组
():代表一个分组
在findall中使用可以只返回分组中的内容
代表分组
\n: 按顺序代表前面的分组相同的内容,\2 就代表前面的第二个分组。
示例
import re
s = "hihi"
r = re.match(r'(hi)\1', s)
print(r.group)
解释: s 代表 两个hi组成的字符串,而分组(hi)就代表hi,而\1就代表分组(hi),因此可以匹配成功。
4.3 特殊字符
- [abc] :匹配abc中的一个。
- [^abc] :匹配非abc中的一个。
- [a-zA-Z0-9_] :匹配数字、字母、下划线,代表\w。
- {n}: 匹配前面的字符n次。
- {m, n}:匹配前面的字符m或n次。
5 .*?
没了解过这个符号的人可能不知道这个是什么意识,这个符号是一个神器。
它可以匹配任何字符。
其实还有一个符号 .,它同样可以匹配任何字符,但它是尽可能多的匹配,而 **.?**是尽可能少的匹配。
本文到此结束,如果觉得可以的话,可以点个关注哦🌹🌹🌹