正则模块

正则表达式

  

  正则表达式是一门独立的语言 跟其他编程语言都没有关系!!!
  

  如果想在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次

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

 

贪婪匹配与非贪婪匹配

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

 

    一些常见的正则不需要自己写 直接百度搜索即可

 

 

取消转义

  在原生的正则表达式中取消转义推荐使用\(每个\只能取消一个字符的转义)
  在python中取消转义推荐使用r'\n\a\t'(也可以使用\)

 

END

posted @ 2021-11-24 18:16  Snails蜗牛  阅读(54)  评论(0编辑  收藏  举报