zoukankan      html  css  js  c++  java
  • Python for Informatics 第11章 正则表达式五(译)

    注:文章原文为Dr. Charles Severance 的 《Python for Informatics》。文中代码用3.4版改写,并在本机测试通过。

    11.4 转义字符

      之前我们在正则表达式中使用特殊字符来匹配一行的开头和结尾,或者是指定通配符,当我们想匹配象"$"或"^"的实际字符时,我们需要一个方法来表示这些“正常”的字符。

      我们可以简单的在字符前添加反斜线""即可实现匹配。例如,我们可以使用下面的正则表达式找到金钱数额:

    import re
    x = 'We just received $10.00 for cookies.'
    y = re.findall('$[0-9.]+', x)

      因为我们在“$"符前添加了反斜线前缀,"$"这个表示式就表示匹配正常的"$"符,而不是表示匹配行的尾部了。这个表达式的后半部分"[0-9.]+"表示匹配一个或者更多的数字或点。要注意的是,在方括号中,字符不是”特殊的“。所以它们是实际上的数字或点。在方括号外的".",则是一个通配符了,可以匹配任何字符。

    11.5 小结

      以上是关于正则表达式的浅显介绍,要想更好的应用正则表达式,我们还需更多地学习它的语言。这些包含特殊字符的查询字符串,是沟通你匹配和抽取字符的愿望和正则表达式系统之间的桥梁。下面是一些特殊字符和字符序列:

      ^  匹配行的开头

      $  匹配行的末尾

      .   匹配任意字符(通配符)

      s   匹配一个空白字符

      S  匹配一个非空白字符(和s相反)

      *  应用到它左侧紧挨的字符,表示匹配零个及以上的左侧字符

      *?   应用到它左侧紧挨的字符,表示以非贪婪模式匹配零个及以上的左侧字符

      +  应用到它左侧紧挨的字符,表示匹配一个及以上的左侧字符

      +?  应用到它左侧紧挨的字符,表示以非贪婪模式匹配一个及以上的左侧字符

      [aeiou]  匹配一个只要是在指定字符集内的元音字符。在这个例子中,它将匹配"a","e","i","o","u",而不是其它字符。

      [a-z0-9]  你可以用减号指定字符的范围,本例匹配一个必须是小写字母或数字的任意字符。

      [^A-Za-z]  当方括号内的第一个字符是插入符,它将反转逻辑。本例匹配一个除大小写字母外的其它字符。

      ()  在使用findall()过程中,在正则表达式中添加的括号,在查询匹配过程中将被忽略,但是允许你抽取括号内的匹配字符。

        匹配空的字符串,但只在一个词的开头和结尾。

      B  匹配空的字符串,但不是在一个词的开头和结尾。

      d  匹配任意十进制数字,等同与[0-9]。

      D  匹配任意非数字字符,等同与[^0-9]。

    11.6 Unix用户的红利

      自19世纪六十年代,Unix系统就集成了正则表达式用于支持查询文件,并且几乎所有的编程语言都支持正则表达式。

      事实上Unix内置了一个叫做grep(Generalized Regular Expression Parser)的命令行程序。它可以做到本章中search()函数几乎一样的功能。所以如果你使用的是Macintosh或Linux系统,你可以在你的命令行窗口尝试以下命令:

    $ grep '^From:' mbox-short.txt

    From: stephen.marquard@uct.ac.za
    From: louis@media.berkeley.edu
    From: zqian@umich.edu
    From: rjlowe@iupui.edu

      这个命令让grep显示mbox-short.txt文件中以"From:"开始的行。如果你对grep命令有一定的经验并且读过它的帮助文档,你会发现Python中的正则表达式和grep中的正则表达式有细微的差别。例如,grep不支持非空格字符"S",所以你需要使用稍微复杂的组合"[^ ]"来匹配一个非空格的任意字符。

  • 相关阅读:
    使用git将本地代码上传到gitee【码云】
    .net设置实例字段在请求参数中不展示
    Springboot 操作Elasticsearch 方式一 【spring-data-elasticsearch】
    Java工具类 (3)------>WordUtils------>利用Poi根据模板生成新的word文档
    Java工具类 (2)------>TreeUtils------>树形结构生成类
    Java工具类 (1)------>IPUtils------>获取用户登录IP地址
    Idea安装MyBatisCodeHelper-Pro插件破解版以及去除mybatis的mapper.xml文件背景颜色
    Python 线程队列 LifoQueue – LIFO
    Python 线程队列 Queue – FIFO
    Python 线程障碍对象 Barrier
  • 原文地址:https://www.cnblogs.com/zhengsh/p/5416509.html
Copyright © 2011-2022 走看看