zoukankan      html  css  js  c++  java
  • 正则表达式学习(python之re模块)

          正则表达式用于查找符合匹配的字符串,记住正则表达式是件挺头疼的事,但只要归好类,就会很好记住。。。      

    定位符
    ^              匹配字符串的开始,如^itcast,匹配以"itcast"开头的字符串
    $               匹配字符串的结束,如itcast$,匹配以"itcast"结尾的字符串
                  匹配单词的开始或结束,例如er 该表达式表示匹配er和空格之间的位置,如可以匹配"never"中的"er",但不能匹配"verb"中的"er"
    B              匹配非单词边界,与上面相反


    确定范围符号
    .               匹配除换行符以外的任意字符
    []              一个方括号代表只匹配一个字符,注意[]内不要有空格,否则会被认为是要匹配一个空格。
    [^]            反义,例如[^1234567890],匹配除数字以外任意字符。
    |               这里代表‘或者’
    -               连接范围,例如[a-zA-Z],任意一个存在26个字母里的字符都可以匹配,不区分大小写。
                  转义字符,将特殊字符转成普通字符
    ()              1、改变限定符范围,2、分组。


    限定符(重复次数)
    *               重复零次或更多次
    +              重复一次或更多次
    ?              重复零次或一次
    {n}           重复n次
    {n,}          重复n次或更多次
    {n,m}       重复n到m次

    字符 (匹配哪些)

    s              匹配任何不可见字符,包括空格、制表符、换页符等等。

    S             匹配任何可见字符。

                 匹配一个制表符。

        一般来说,编写正则表达式不要有空格,否则会被认为是要匹配一个空格,或者特殊字符被认为普通字符。

    python之re模块

                      pattern: 正则模型

                      repl:要替换的字符串或可执行对象
                      string : 要匹配的字符串
                      count : 指定替换个数,默认为0,表示每个匹配项都替换。
                      flags : 匹配模式,用于控制正则表达式的匹配方式

    1、match(pattern, string, flags=0)

    从字符串的开始根据正则模型匹配指定内容,匹配单个(只找一个)。

    2、search(pattern, string, flags=0)

    在字符串内根据正则模型匹配指定内容,匹配单个(只找一个),如果字符串没有匹配,则返回None。

    3、group和groups

    groups():表示从group(1)开始往后的所有值,组合成一个元组类型的值;
    group():表示取全部匹配的字符串或者指定的组,返回结果是一个字符串;

       注意,如果匹配多次,只有最后一个匹配可以访问,如下代码:

    1 m = re.match(r"(..)+", "a1b2c3") 
    2 m.group(1) 
    3 print m.group(1)

         m.group(1)的返回结果为"c3",而不是"a1"。

    4、sub(pattern, repl, string, count=0, flags=0)

     re.sub用于替换字符串中的匹配项。                              

    下面一个例子将字符串中的空格 ' ' 替换成 '-' :  

    import re
    text = "JGood is a handsome boy, he is cool, clever, and so on..."
    print re.sub(r's+', '-', text)

    re.sub还允许使用函数对匹配项的替换进行复杂的处理。如:re.sub(r's', lambda m: '[' + m.group(0) + ']', text, 0);将字符串中的空格' '替换为'[ ]'。

    5、split(pattern, string, maxsplit=0, flags=0)

    可以使用re.split来分割字符串,如:re.split(r's+', text);将字符串按空格分割成一个单词列表。

    相当于以正则模型为基准,将匹配部分的左右两边字符串分割,并丢掉匹配部分;

    如果在以正则模型部分加上"()"之后所切出的结果,会保留了匹配的项。

    6、findall(pattern, string, flags=0)

      re.findall可以获取字符串中所有匹配的字符串。如:re.findall(r'w*oow*', text);获取字符串中,包含'oo'的所有单词。

    7、re.compile

      可以把正则表达式编译成一个正则表达式对象。可以把那些经常使用的正则表达式编译成正则表达式对象,这样可以提高一定的效率。下面是一个正则表达式对象的一个例子:

    import re
    text = "JGood is a handsome boy, he is cool, clever, and so on..."
    regex = re.compile(r'w*oow*')
    print regex.findall(text)   #查找所有包含'oo'的单词
    print regex.sub(lambda m: '[' + m.group(0) + ']', text) #将字符串中含有'oo'的单词用[]括起来。
    

      

  • 相关阅读:
    Super Jumping! Jumping! Jumping!
    glsl学习之cube
    取得某个进程CPU的占用率
    在游戏中使用“CEGUI”
    vbo 简单演示
    平行光镜面反射模型
    使用fbo来实现render to texture演示
    平行光漫反射模型
    glsl teapot 简单演示
    点光源模型
  • 原文地址:https://www.cnblogs.com/lanchang/p/6659095.html
Copyright © 2011-2022 走看看