zoukankan      html  css  js  c++  java
  • Python 正则

    • ? 匹配零次或一次前面的字符或分组
    • * 匹配零次或多次前面的字符或分组
    • + 匹配一次或多次前面的字符或分组
    • {n} 匹配n次前面的字符或分组
    • {n,} 匹配n次或更多次前面的字符或分组
    • {,m} 匹配零次或m次前面的字符或分组
    • {n,m} 匹配至少n次,最多m次前面的字符或分组
    • {n,m}? 或 *? 或+? 对前面的字符或分组进行非贪心匹配
    • ^spam 字符串必须以spam开始
    • spam$ 字符串必须经spam结束
    • . 匹配所有字符,换行符除处
    • d、w、s 分别匹配数字、单词、空格
    • D、W、S 分别匹配出数字、单词、空格以外的所有字符
    • [abc] 匹配方括号内的任意字符(如a、b 或c)
    • [^abc] 匹配不在方括号内的任意字符

    利用'()'括号分组,使用group(n)groups()匹配对象方法,从分组中获取匹配的文本:

    >>> num = re.compile(r'(d{4})-(d{7})')
    >>> my = num.search('my number is 0310-5561921')
    >>> my.groups()
    ('0310', '5561921')
    >>> my.group(1)
    '0310'
    >>> my.group(2)
    '5561921'
    

    利用 '|' 管道匹配多个分组

    # 当希望匹配多个管道中的一个时
    
    >>> name = re.compile(r'lisi|wangwu')
    >>> myname = name.search('myname is lisi')
    >>> myname.group()
    'lisi'
    >>> myname = name.search('my name is wangwu,your name is lisi')
    >>> myname.group()
    'wangwu'
    
    

    利用 '?' 实现可选匹配

    >>> num = re.compile(r'(d{4}-)?d{7}')
    >>> mynum = num.search('0310-5561921')
    >>> mynum.group()
    '0310-5561921'
    >>> mynum = num.search('5561921')
    >>> mynum.group()
    '5561921'
    
    

    seach()方法:返回一个match对象,包含被查找字符串的第一次匹配文本
    findall()方法:返回一组字符串,包含被查找对象的所有区配

    >>> num = re.compile(r'd{4}-d{7}')
    >>> num.findall("my host num is '0311-5561931',my work num is '0310-5923111'")
    ['0311-5561931', '0310-5923111']
    
    
  • 相关阅读:
    eclipse配置
    TableViewComponent v2
    4500装机指南
    【翻译】Ext JS 4——Ajax和Rest代理处理服务器端一场和消息的方法
    【翻译】Ext JS——高效的编码风格指南
    JDK8帮助文档生成-笔记
    【翻译】在Ext JS 5种使用ViewControllers
    【翻译】Ext JS最新技巧——2014-5-12
    PS图像特效算法——百叶窗
    人脸表情识别常用的几个数据库
  • 原文地址:https://www.cnblogs.com/lijunjiang2015/p/7838044.html
Copyright © 2011-2022 走看看