Python-高级:正则表达式1

Python中使用正则表达式:

# 导入re模块
import re

# 使用match方法进行匹配操作
result = re.match(正则表达式, 要匹配的字符串)

# 如果上一步匹配到数据的话,可以使用group方法来提取数据(满足规范要求的数据)
result.group()

匹配单字符

  • 匹配单个数字:\d :匹配一位数字;等价于[0123456789];等价于[0-9]
  • 匹配单个字符:[a-z]:匹配所有的小写字母;[ab]:匹配a、b
                             \w:匹配一个字符(数字、字母、字符、中文、别的语言等。。。)
                             \s:匹配空白(空格、Tab键)
                            注意:所有\大写字母 与 \小写字母 含义相反
                            . :匹配任意一个字符

匹配多个字符

  • \d{1,2}:匹配一到两个数字,eg: 32,5
    \d{1,3}:匹配一到三个数字,eg:123,533,95,1
  • \d{11}:匹配必须11个数字:eg:12325567890
  • ?:问号前面的一个字符可有可无
  • *:星号前面的可以有0个或多个,“.*”:匹配0个或多个字符; “.+”:匹配一个或多个字符
    eg:(正常情况下'.'匹配不到\n,当传入的参数:re.S,意思是让'.'包括\n)

     

判断开头,判断结尾 

  • ^:匹配字符串开头
  • $:匹配字符串结尾

示例

1.查看一个字符串是否符合python变量规范:

import re

# 判断变量名是否符合要求

def main():
    names = ['name1', '_name', '$name', '1name', 'name_', '_name1', 'n_d_', 'name!', '_@', '_']
    for name in names:
        # if re.match(r"[a-zA-Z_][a-zA-Z0-9_]*", name):
        # if re.match(r"[a-zA-Z_][a-zA-Z0-9_]*$", name):  # 当正则表达式判断完时,正好是字符串结尾;言外之意:在python中match默认匹配开头
        if re.match(r"^[a-zA-Z_][a-zA-Z0-9_]*$", name):  # 完整的写法
            print("%s is correct!"%name)
        else:
            print("%s is not right!"%name)

if __name__ == "__main__":
    main()

2.匹配出163的邮箱地址,且@符合之前有4到20位,例如hello@163.com

# 匹配出163的邮箱地址,且@符合之前有4到20位,例如hello@163.com
import re


def main(mail_addr):
    # ret = re.match(r".{4,20}@163[.]com$", mail_addr)  # 这种写法不对:hello@@163.com 也被判断为对的。
    # 如果在正则表达式中需要用到某些普通的字符,如:. 如: ? 等,仅仅需要在它们前面添加\
    # ret = re.match(r".{4,20}\@163\.com$", mail_addr)  # 为什么错,因为“.” 匹配所有字符,所以两个@@也对了。
    
    # 教程中的写法
    ret = re.match(r"[a-zA-Z0-9]{4,20}@163\.com$", mail_addr)
    if ret:
        print("%s符合要求的邮箱地址。"%mail_addr)
    else:
        print("%s不符合要求的邮箱地址。"%mail_addr)


if __name__ == "__main__":
    mail_addr = input("请输入一个要判断的邮箱地址:")
    main(mail_addr)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值