zoukankan      html  css  js  c++  java
  • 【Python57--正则1】

    一、正则表达式匹配IP地址

    1、search()方法:用于在字符串中搜索正则表达式模式第一次出现的位置

    >>> import re
    >>> re.search(r'chen','I love chenfeng')
    <re.Match object; span=(7, 11), match='chen'>
    >>> 
    
    '''
    |-- span(7,11):chen 下标在7到11的位置出现
    '''

    2、正则表达式中的“.”表示除了换行符中的所有字符 即:通配符

    >>> re.search(r'.','I love chenfeng!')
    <re.Match object; span=(0, 1), match='I'>

    >>> re.search(r'chen.','I love chen.feng.com')
    <re.Match object; span=(7, 12), match='chen.'

    3、匹配点号如何做处理呢,只需要在点号前面加上反斜杠“”,这时候点号不代表任何字符,只代表点号自己

    >>> re.search(r'.','I love chen.feng.com!')
    <re.Match object; span=(11, 12), match='.'>

    4、匹配数字:反斜杠+d   :  " d  "

    >>> re.search(r'd','I love 123chenfeng.com!')
    <re.Match object; span=(7, 8), match='1'>
    >>> re.search(r'ddd','I love 123chenfeng.com!')
    <re.Match object; span=(7, 10), match='123'>
    >>> 

    5、匹配IP地址

    >>> re.search(r'ddd.ddd.ddd.ddd','192.168.111.123')
    <re.Match object; span=(0, 15), match='192.168.111.123'>
    >>>
    这样匹配的问题是:
    1、d匹配的数字范围是0~9,而IP的最大范围是255
    2、这里要求每一组的IP地址必须是三个数字,如果遇到192.168.1.1这样的IP地址就没办法匹配成功

    改进的方法:
    1>、用中括号" [] "创建字符类
    举例匹配 I love chenfeng.com  字符串中的l
    >>> re.search(r'[a-z]','I love 123chenfeng.com!')
    <re.Match object; span=(2, 3), match='l'>
    
    
    举例匹配“I love 123chenfeng.com ” 字符串中的1
    >>> re.search(r'[0-9]','I love 123chenfeng.com!')
    <re.Match object; span=(7, 8), match='1'>
    >>> 

     2>、限定重复匹配的次数 可以用大括号:{}

    >>> re.search(r'ab{3}c','abbbc')
    <re.Match object; span=(0, 5), match='abbbc'>
    >>> re.search(r'ab{3}c','abbbbbbc')
    匹配不了的可以用范围进行匹配
    >>> re.search(r'ab{0,9}c','abbbbbbc')
    <re.Match object; span=(0, 8), match='abbbbbbc'>
    >>> 

    3、匹配0~255的数字

    >>> re.search(r'[01]dd|2[0-4]d|25[0-5]','188')
    <re.Match object; span=(0, 3), match='188'>
    >>>
    
    “[01]dd|2[0-4]d” 中的“|”是“或”的含义,或者[01]dd成立,或者2[0-4]d成立,或者25[05]成立,其中任何一个成立都是可以的
    [01]dd : 百位数字是0或者1的话,十位和各位可以是任何数字
    2[0-4]d :百位是2,十位是0~5,则各位可以是任何数字
    25[05] :百位是2,十位是5,则各位只能是0~5的数字

    4、匹配IP地址

    >>> re.search(r'(([01]{0,1}d{0,1}d|2[0-4]d|25[05]).){3}([01]{0,1}d{0,1}d|2[0-4]d|25[05])','191.168.1.1')
    <re.Match object; span=(0, 11), match='191.168.1.1'>
    >>>
     
  • 相关阅读:
    UVA 11488 Hyper Prefix Sets (字典树)
    UVALive 3295 Counting Triangles
    POJ 2752 Seek the Name, Seek the Fame (KMP)
    UVA 11584 Partitioning by Palindromes (字符串区间dp)
    UVA 11100 The Trip, 2007 (贪心)
    JXNU暑期选拔赛
    计蒜客---N的-2进制表示
    计蒜客---线段的总长
    计蒜客---最大质因数
    JustOj 2009: P1016 (dp)
  • 原文地址:https://www.cnblogs.com/frankruby/p/10138326.html
Copyright © 2011-2022 走看看