匹配单个字符
字符 | 功能 |
---|---|
. | 匹配任意1个字符(除了\n) |
[ ] | 匹配[ ]中列举的字符 |
\d | 匹配数字,即0-9 |
\D | 匹配非数字,即不是数字 |
\s | 匹配空白,即 空格,tab键 |
\S | 匹配非空白 |
\w | 匹配单词字符,即a-z、A-Z、0-9、_ |
\W | 匹配非单词字符 |
示例1
字符 .:可以匹配容易字符(除了\n)
ret = re.match(“t.o”,“tio”)
print(ret.group())
ret = re.match(“t.o”,“two”)
print(ret.group())
运行结果
tio
two
示例2
字符 [ ]:匹配[ ]例举的字符
import re
et = re.match("[hH]",“hello Python”)
print(et.group())
aret = re.match("[hH]",“Hello Python”)
print(aret.group())
eret = re.match("[hH]ello Python",“Hello Python”)
print(eret.group())
运行结果
hello Python
Hello Python
Hello Python
示例3
字符\d:匹配数字0-9
ret = re.match(“嫦娥1号”,“嫦娥1号发射成功”)
print(ret.group())
ret = re.match(“嫦娥\d号”,“嫦娥2号发射成功”)
print(ret.group())
运行结果
嫦娥1号,嫦娥1号发射成功
嫦娥2号,嫦娥2号发射成功
示例4
{m}:
import re
ret = re.match("[a-zA-Z0-9_]{6}",“12a3g45678”)
print(ret.group())
ret = re.match("[a-zA-Z0-9_]{8,20}",“1ad12f23s34455ff66”)
print(ret.group())
运行结果:
12a3g4
1ad12f23s34455ff66
匹配多个字符
匹配多个字符的相关格式
字符 | 功能 |
---|---|
* | 匹配前一个字符出现0次或者无限次,即可有可无 |
+ | 匹配前一个字符出现1次或者无限次,即至少有1次 |
? | 匹配前一个字符出现1次或者0次,即要么有1次,要么没有 |
{m} | 匹配前一个字符出现m次 |
{m,n} | 匹配前一个字符出现从m到n次 |
示例1
** : 匹配前一个字符出现0次或者无限次,可有可无*
ret = re.match("[A-Z][a-z]*",“Aabcdef”)
print(ret.group())
运行结果
Aabcdef
示例2
字符+:匹配前一个字符出现1次或者无限次,即至少有1次
import re
names = [“name1”, “_name”, “2_name”, “name”]
for name in names:
ret = re.match("[a-zA-Z_]+[\w]*",name)
if ret:
print(“变量名 %s 符合要求” % ret.group())
else:
print(“变量名 %s 非法” % name)
运行结果
变量名 name1 符合要求
变量名 _name 符合要求
变量名 2_name 非法
变量名 name 符合要求
示例3
字符?:匹配前一个字符出现1次或者0次,即要么有1次,要么没有
import re
ret = re.match("[1-9]?[0-9]",“7”)
print(ret.group())
ret = re.match("[1-9]?\d",“33”)
print(ret.group())
ret = re.match("[1-9]?\d",“09”)
print(ret.group())
示例4
字符{m}:匹配前一个字符出现m次
import re
ret = re.match("[a-zA-Z0-9_]{6}",“12a3g45678”)
print(ret.group())
ret = re.match("[a-zA-Z0-9_]{8,20}",“1ad12f23s34455ff66”)
print(ret.group())
匹配开头结尾
字符 | 功能 |
---|---|
^ | 匹配字符串开头 |
$ | 匹配字符串结尾 |
案例1
^: 匹配字符串开头
案例2
$: 匹配字符串结尾
import re
email_list = [“xiaoWang@163.com”, “xiaoWang@163.comheihei”, ".com.xiaowang@qq.com"]
for email in email_list:
ret = re.match("[\w]{4,20}@163.com$", email)
if ret:
print("%s 是符合规定的邮件地址,匹配后的结果是:%s" % (email, ret.group()))
else:
print("%s 不符合要求" % email)
运行结果:
xiaoWang@163.com 是符合规定的邮件地址,匹配后的结果是:xiaoWang@163.com
xiaoWang@163.comheihei 不符合要求
.com.xiaowang@qq.com 不符合要求
**^: 匹配字符串开头 **
import re
email_list = [“xiaoWang@163.com”, “xiaoWang@163.comheihei”, ".com.xiaowang@qq.com"]
for email in email_list:
ret =re.match("1{4,20}@163.com", email)
if ret:
print("%s 是符合规定的邮件地址,匹配后的结果是:%s" % (email, ret.group()))
else:
print("%s 不符合要求" % email)
运行结果
xiaoWang@163.com 是符合规定的邮件地址,匹配后的结果是:xiaoWang@163.com
xiaoWang@163.comheihei 是符合规定的邮件地址,匹配后的结果是:xiaoWang@163.com
.com.xiaowang@qq.com 不符合要求
\w ↩︎