Python——正则表达式

2018-08-30
正则表达式

  1. 正则表达式简介:
      它是一种由-符号-组成的,用来检索字符串的、特殊表达式!!
    需要正则表达式引擎进行解释、分析。目前,正则表达式的引擎主要分为三种:DFA, NFA, POSIX, NFA。

  2. 正则表达式的语法结构
      通过python程序进行测试,但是正则表达式的语法结构在各种语言环境中都是通用的。

Python中提供了re模块,包含了正则表达式的所有功能,专门用于进行正则表达式的处理。

对比:常规的验证手机号码操作:

phone = input("请输入手机号:")

# 验证用户手机号码是否合法的函数
def validatePhone(phone):
    # 判断长度是否合法:
    if len(phone) == 11:
    #判断开始的三位数字是否合法:
        if phone.startswith("156") or phone.startswith("187"):
            # 遍历号码,是否都是数字
            for n in phone:
                # isdigit() 判断是否都是数字
                if not n.isdigit():
                    msg = "手机号码中有非法字符"
                    return msg
            else :
                print("手机号码合法")
        else:
            print("开头数字不合法")
    else:
        print("长度不合法")

print(validatePhone(phone))

测试执行结果如下:

请输入手机号:1563825238怕
手机号码中有非法字符
请输入手机号:18713640027
手机号码合法
None

当我们用正则表达式来改造这段程序时,代码量将大大缩短!!
先上代码:

import re

phone = input("请输入手机号:")

# 验证用户手机号码是否合法的函数
def validatephone(phone):
    # 定义正则表达式
    regexp = r"(156|187)\d{8}$"

    # 开始验证
    if re.match(regexp, phone):
        return "手机号码合法"
    else:
        return "手机号码不合法,请检查号码!!"

# 调用函数执行
print(validatephone(phone))

测试执行结果:

请输入手机号:1875889664
手机号码不合法,请检查号码!!
请输入手机号:18712345678
手机号码合法

2.1 正则表达式中的元字符
  在使用正则表达式的过程中,一些包含特殊含义的字符,用于表示字符位置,非常重要!!

元字符 作用
^ 匹配字符串的开头位置的字符
$ 匹配字符串的结束位置的字符
. 匹配任意一个字符
\d 匹配一个数字字符
\D 匹配一个非数字字符
\s 匹配一个空白字符
\S 匹配一个非空白字符
\w 匹配一个数字/字母/下划线任意一个字符
\W 匹配一个非数字、字母、下划线组成的任意一个字符
\b 匹配一个单词的边界
\B 匹配不是单词的开头或者结束位置

2.2 正则表达式的量词

量词 作用
x* 匹配 * 号前面的字符出现0次或者多次
x+ 匹配 + 号前面的字符出现1次或多次
x? 匹配 ? 号前面的字符出现0次或者1次
x{n} 匹配 x 前面的字符出现n次
x{m, n} 匹配 x 前面的字符出现至少m次,最多n次
x{n, } 匹配 x 前面字符出现至少n次
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容