1. re模块
1. 语法
import re
result = re.match(正则表达式, 要匹配的字符串)
result.group()
2. 示例
import re
str_mt = re.match("cc", "ccblogs")
print(str_mt.group())
cc
2. 匹配单个字符
| 代码 | 功能 |
|---|
| . | 匹配任意一个字符(除了\n) |
| [] | 匹配[]中列举的字符串 |
| \d | 匹配数字,即0-9 |
| \D | 匹配非数字,即不是数字 |
| \s | 匹配空白,即空格,tab键 |
| \S | 匹配非空白 |
| \w | 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字 |
| \W | 匹配特殊字符,即非字母、非数字、非汉字、非_ |
3. 匹配多个字符
| 代码 | 功能 |
|---|
| * | 匹配前一个字符出现0次或者无限次,即可有可无 |
| + | 匹配前一个字符出现1次或者无限次,即至少有1次 |
| ? | 匹配前一个字符出现1次或者0次,即要么有1次,要么没有 |
| {m} | 匹配前一个字符出现m次 |
| {m,n} | 匹配前一个字符出现从m到n次 |
4. 匹配开头和结尾
| 代码 | 功能 |
|---|
| ^ | 匹配字符串开头 |
| $ | 匹配字符串结尾 |
| [^指定字符] | 除了指定字符都匹配 |
5. 匹配分组
| 代码 | 功能 |
|---|
| | | 匹配左右任意一个表达式 |
| (ab) | 将括号中字符作为一个分组 |
| \num | 引用分组num匹配到的字符串 |
| (?P) | 分组起别名 |
| (?P=name) | 引用别名为name分组匹配到的字符串 |
import re
fruit_lst = ['apple', 'banana', 'orange', 'pear', 'peach']
for val in fruit_lst:
str_mt = re.match("banana|pear", val)
if str_mt:
print(str_mt.group())
else:
print("没有匹配到")
没有匹配到
banana
没有匹配到
pear
没有匹配到
import re
str_mt = re.match("[a-zA-Z0-9_]{4,20}@(163|126|qq)\.com", "hello@163.com")
if str_mt:
print(str_mt.group())
print(str_mt.group(0))
print(str_mt.group(1))
else:
print("没有匹配到")
hello@163.com
hello@163.com
163
import re
str_mt = re.match("<([a-zA-Z1-6]+)><([a-zA-Z1-6]+)>.*</\\2></\\1>", "<html><h1>ccblogs</h1></html>")
if str_mt:
print(str_mt.group())
else:
print("没有匹配到")
import re
str_mt = re.match("<(?P<grp1>[a-zA-Z1-6]+)><(?P<grp2>[a-zA-Z1-6]+)>.*</(?P=grp2)></(?P=grp1)>", "<html><h1>ccblogs</h1></html>")
if str_mt:
print(str_mt.group())
else:
print("没有匹配到")