12.u5b57u7b26u4e32u548cu6b63u5219u8868u8fbeu5f0f.md...

This preview shows page 1 - 2 out of 5 pages.

## 使用正则表达式 ### 正则表达式相关知识 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描 述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配模式(如何检查一个字符串是否 有跟某种模式匹配的部分或者从一个字符串中将与模式匹配的部分提取出来或者替换掉)。如果你在 Windows 操作系统中使用过文件查找并且在指定文件名时使用过通配符( \* ? ),那么正则表达式也是与 之类似的用来进行文本匹配的工具,只不过比起通配符正则表达式更强大,它能更精确地描述你的需求(当然 你付出的代价是书写一个正则表达式比打出一个通配符要复杂得多,要知道任何给你带来好处的东西都是有代 价的,就如同学习一门编程语言一样),比如你可以编写一个正则表达式,用来查找所有以 0 开头,后面跟着 2-3 个数字,然后是一个连字号“ -” ,最后是 7 8 位数字的字符串(像 028-12345678 0813- 7654321 ),这不就是国内的座机号码吗。最初计算机是为了做数学运算而诞生的,处理的信息基本上都是 数值,而今天我们在日常工作中处理的信息基本上都是文本数据,我们希望计算机能够识别和处理符合某些模 式的文本,正则表达式就显得非常重要了。今天几乎所有的编程语言都提供了对正则表达式操作的支持, Python 通过标准库中的 re 模块来支持正则表达式操作。 我们可以考虑下面一个问题:我们从某个地方(可能是一个文本文件,也可能是网络上的一则新闻)获得了一 个字符串,希望在字符串中找出手机号和座机号。当然我们可以设定手机号是 11 位的数字(注意并不是随机 11 位数字,因为你没有见过“ 25012345678” 这样的手机号吧)而座机号跟上一段中描述的模式相同,如果 不使用正则表达式要完成这个任务就会很麻烦。 关于正则表达式的相关知识,大家可以阅读一篇非常有名的博客叫 [ 《正则表达式 30 分钟入门教程》 ] () ,读完这篇文章后你就可以看懂下面的表格, 这是我们对正则表达式中的一些基本符号进行的扼要总结。 | 符号 | 解释 | 示例 | 说明 | | ------------------ | ----------------------------------------- | ---------------- | -------------------------------------------------- | | . | 匹配任意字符 | b.t | 可以匹配 bat / but / b#t / b1t | | \\w | 匹配字 / 数字 / 划线 | b\\wt | 可以匹配 bat / b1t / b_t <br> 不能匹配 b#t | | \\s | 匹配 空白 字符( 包括 \r \n \t 等) | love\\syou | 以匹配 love you | | \\d | 匹配数字 | \\d\\d | 可以匹配 01 / 23 / 99 | | \\b | 匹配 单词 边界
Image of page 1
Image of page 2

You've reached the end of your free preview.

Want to read all 5 pages?

  • Fall '19

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture