正则表达式微了解


正则表达式

        """
        定义:正则表达式是一门独立的语言 跟其他编程语言都没有关系!!!
        如果想在python代码中使用正则 需要借助于内置模块re
        """
        # 什么是正则表达式?
            利用一些特殊符号的组合去字符组中筛选出符合条件的数据


        """
        1.必须是11位
        2.必须是纯数字
        3.必须符合手机号的排布  15 16 18 19
        """
        # phone = input('请输入你的手机号>>>:').strip()
        # if len(phone) == 11:
        #     if phone.isdigit():
        #         if phone.startswith('15') or phone.startswith('16') or phone.startswith('18') or phone.startswith('19'):
        #             print('手机号正确')
        #         else:
        #             print('格式不对')
        #     else:
        #         print('手机号必须是纯数字')
        # else:
        #     print('必须是11位')


        import re
        phone_number = input('please input your phone number : ')
        if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
                print('是合法的手机号码')
        else:
                print('不是合法的手机号码')

字符组

        # 特征是使用中括号括起来的  字符组默认只能单个单个字符匹配
        [0123456789]  # 匹配0到9之间任何一个数字
            可以简写为
            [0-9]
        [a-z]  # 匹配小写字母a到字母z其中任意一个字母
        [A-Z]  # 匹配大写字母A到字母Z其中任意一个字母
        [a-zA-Z0-9]  # 匹配所有的数字 小写 大写

特殊符号

        # 特殊符号默认也只能单个单个字符匹配
        . 		匹配除换行符以外的任意字符
        \d		匹配数字
        ^		匹配字符串的开始
        $		匹配字符串的结尾
                """^与$组合使用可以精准限制要查找的数据"""
        a|b		匹配字符a或字符b
        ()		匹配括号内的表达式也表示一个组(不会影响正则表达式的匹配单纯的分组而已)
        [...]	匹配字符组中的字符
        [^...]	匹配除了字符组中字符的所有字符

量词

       1.表达式在没有量词修饰的情况下 都是单个单个匹配
        2.量词必须结合(字符串、特殊符合等)一起使用 不能单独出现
        3.量词只能影响前面的一个表达式(ab+ 只能影响b)

        *		重复零次或更多次
        +		重复一次或更多次
        ?		重复零次或一次
        {n}		重复n次
        {n,}	重复n次或更多次
        {n,m}	重复n到m次

        """
        正则表达式中的量词默认都是'贪婪匹配'
        """

贪婪匹配与非贪婪匹配

        # 带匹配的字符串
            
        # 正则表达式
            <.*>  '''默认贪婪匹配 尽可能多的匹'''
        # 将贪婪变为非贪婪 只需要在量词的后面加问号即可
            <.*?> '''非贪婪匹配 尽可能少的匹  结束条件有左右两边决定'''

py