zoukankan      html  css  js  c++  java
  • 正则表达式

    使用的特殊符号:

    *   匹配前面出现的正则表达式0次或多次

    +   匹配前面出现的正则表达式1次或多次

    ?  匹配前面出现的正则表达式0次或1次

    re1|re2  匹配正则表达式re1或re2

    ^   匹配字符串的开始

    $   匹配字符串的结尾

    .   匹配任何字符(换行符除外)

    {N}   匹配前面出现的正则表达式出现N次

    使用的字符

    d   匹配任何数字,和[0-9]一样(D是d的反义:任何非数字符)

    w   匹配任何数字字母字符,和[A-Za-z0-9]相同(W是w的反义)

    s   匹配任何空白符,和[ vf]相同,(S是s的反义)

       匹配单词边界(B是的反义)

    A   匹配字符串的开始

       匹配字符串的结束

    >>> import re

    >>> str = 'abc123def12gh1'

    >>> p1 = re.compile('d+')
    >>> print p1.findall(str)
    ['123', '12', '1']
    >>>
    >>> p2 = re.compile('d')
    >>>
    >>> print p2.findall(str)
    ['1', '2', '3', '1', '2', '1']
    >>>

    >>> str = 'a@163.com;b@gmail.com;c@qq.com e0@163.com;f@qq.com'
    >>> p3 = re.compile('w+@163.com')
    >>> print p3.findall(str)
    ['a@163.com', 'e0@163.com']
    >>>
    >>> p4 = re.compile('w+@[163|qq].com')
    >>> print p4.findall(str)
    []
    >>> p4 = re.compile('w+@[163|qq]+.com')  #  w+  @前面一个或多个数字或字母, .com  为转义字符
    >>> print p4.findall(str)
    ['a@163.com', 'c@qq.com', 'e0@163.com', 'f@qq.com']

    >>> str = '<html><h>title</h><body>xxx</body></html>'
    >>> p5 = re.compile('<h>[^<]+</h>')   # [^<]+表示不是尖括号<
    >>> print p5.findall(str)
    ['<h>title</h>']
    >>>
    >>> p5 = re.compile('<h>([^<]+)</h><body>([^<]+)</body>')  #圆括号用来指定找的部分
    >>> print p5.findall(str)
    [('title', 'xxx')]

    >>> str = 'xx2016-06-11yy'
    >>> p6 = re.compile('d{4}-d{2}-d{2}')    #d{4}  数字出现4次
    >>> print p6.findall(str)
    ['2016-06-11']

    >>> p7 = re.compile('dddd-dd-dd')
    >>> print p7.findall(str)
    ['2016-06-11']

  • 相关阅读:
    JavaScript深入解读
    CentOS7上安装与配置Tomcat8与MySQL5.7
    码云的初步使用
    MySQL安装与初步操作
    自定义消息队列
    用Executors工具类创建线程池
    Java中的BlockingQueue队列
    Restful对于URL的简化
    docker push 实现过程
    通过docker-machine和etcd部署docker swarm集群
  • 原文地址:https://www.cnblogs.com/toudoubao/p/6705622.html
Copyright © 2011-2022 走看看