基础:正则表达式方便理解

# 导入re模块
import re

# re.match(正则表达式,需要处理的字符串)
ret = re.match(r"hello" ,"hello world")
print(ret)
# [] 判断中括号数据
# .*  点:任意   * 
ret = re.match(r"[12345678].*", "4速度与激情") 
print(ret)
[] 匹配[]中列的字符 
\d 匹配(0,9)数字
\w 匹配单词字符 
\s 匹配空格
\D 小的相反
\S 小的相反
\W 小的相反
. 等价任意1个(除了\n)

匹配多个字符串:问号/大括号/星号/点匹配反斜\n
\d{1,2} 匹配来约束定义是数,如:手机号:
* 匹配任意个数,即可有可无
{} 约束个数
“”“”“” 匹配所用不换行
+ 匹配前一个字符出现1次或者无限次,即至少有1次
?匹配前一个字符出现1次或者0,即至少有1次,要么没有
{m} 匹配就一个字符出现 m次 
{m,n} 匹配就一个字符出现 m次到次
注意:
/n 不能匹配
re.S 想匹配需要加
^$ 从头匹配到屋
| 或(左右一边)
(ab) 将括号中的字符作为一个分组
\nam 引用分组num匹配到的字符串
(?P<name>)  分组起名 
(?P=name)  引用别名为name分组匹配到的字符串
match 匹配从头开始
search (位置不定)匹配字符串:
sub  替换多个 注意:必须返回字符串  
findall  返回列表
splist  切割字符串
+? 变非贪婪
*? 变非贪婪
?? 变非贪婪
{1,3}? 变非贪婪
ret = re.match(r".*[1-8]", "速度与激情8") 
print(ret)
# 中括号也可以字母
ret = re.match(r".*[1-8a-zA-Z]", "速度与激情D") 
print(ret)
# {}大括号约束定义是数:如手机号
ret = re.match(r"\d{11}", "13971052605") 
print(ret)
# {}大括号约束定义是数:如手机号
# 匹配电话号码是否正确
ret = re.match(r"027-?\d{8}", "027-65503097") 
print(ret)
# {}大括号约束定义是数:如手机号
# 匹配电话号码是否正确
# 如果是7,8位的电话号码,如下:
ret = re.match(r"\d{3,4}-?\d{7,8}", "0270-65503097") 
print(ret)
# .* 匹配所有字符串 
# 结果:为什么dfsdfsdfsdf是这个结果?
a = """dfsdfsdfsdf
sdf
sdfsdf
sdfsdfsdfsdfsdf
sdf
sdfsdfsdfsdgdfhgfhsgd
dsfaffasf
"""
ret = re.match(r".*", a)
print(ret)
# 想匹配需要加  re.S
a = """dfsdfsdfsdf
sdf
sdfsdf
sdfsdfsdfsdfsdf
sdf
sdfsdfsdfsdgdfhgfhsgd
dsfaffasf
"""
ret = re.match(r".*", a,re.S )
print(ret)
#匹配出,变量名是否有效
names = ["name1", "_name", "2_name", "__name__"]
for k in names:
    ret = re.match(r"[a-zA-Z_][a-zA-Z_0-9]*",k)
    if ret:
        print("变量名 %s 符合要求%s" % (k,ret.group()))
    else:
        print("变量名 %s 非法"%k)

# 变量名 name1 符合要求name1
# 变量名 _name 符合要求_name
# 变量名 2_name 非法
# 变量名 __name__ 符合要求__name__
#匹配出,变量名是否有效
# ^ $ 从头匹配到屋
names = ["name1", "_name", "2_name", "__name__"]
for k in names:
    ret = re.match(r"^[a-zA-Z_][0-9a-zA-Z_]*$",k)
    if ret:
        print("变量名 %s 符合要求%s"%(k,ret.group()))
    else:
        print("变量名 %s 非法"%k)
#匹配出,变量名是否有效
# ^ $ 从头匹配到屋
names = ["name1", "_name", "2_name", "__name__"]
for k in names:
    ret = re.match(r"^[a-zA-Z_][0-9a-zA-Z_]*$",k)
    if ret:
        print("变量名 %s 符合要求%s"%(k,ret.group()))
    else:
        print("变量名 %s 非法"%k)

# 变量名 name1 符合要求name1
# 变量名 _name 符合要求_name
# 变量名 2_name 非法
# 变量名 __name__ 符合要求__name__
# 匹配多个邮箱地址,如:126,qq,.....
email = input("请输入邮箱地址:")
ret = re.match(r"[a-zA-Z_0-9]{4,20}@(163|126|qq)\.com$\.com$", email)
if ret:
    print("%s符合"% email)
else:
    print("%s不符合"% email)

# 请输入邮箱地址:15088842598@163.comcom
# 15088842598@163.comcom不符合
这里写代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值