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("没有匹配到")