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']
    
    
  • 相关阅读:
    2018第一发:记一次【Advanced Installer】打包之旅
    Nginx 实现端口转发
    php支付宝手机网页支付类实例
    磁盘阵列操作实战
    错误修改/etc/fstab,导致系统无法开机
    linux 查看机器的cpu,操作系统等命令
    shell实现https登录
    linux tomcat配置https
    ArrayList和Vector以及synchronizedList
    java synchronized修饰普通方法,修饰静态方法,修饰代码块,修饰线程run方法 比较
  • 原文地址:https://www.cnblogs.com/lijunjiang2015/p/7838044.html
Copyright © 2011-2022 走看看