Python 编程快速上手 第七章总结

前言

在 Word 软件中,我们总是习惯使用 CMD+F 用来查找和替换文本,但是,正如作者所说:

虽然计算机可以很快地查找文本,但你必须精确地告诉它要找什么。

我们往往想要查找一类文本,比如一段文本中网页的网址,电话号码,E-mail 地址等等。这时候,我们查找的是一种“文本模式”,而正则表达式就是文本模式的描述方法。

定义

正则表达式:英文为 regular expression, 简称 regex,是文本模式的描述方法。

基本步骤

  1. 导入模块:import re
  2. 创建一个 Regex 模式对象:即向 re.compile() 传入一个字符串值:phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
  3. 匹配字符串:使用 Regex( 模式)对象的 search() 方法(或者findall()方法)进行匹配对应的字符串,将返回一个 Match 对象(或者一个
  4. 列表)。
    1. 查看结果。使用 Match() 对象的 group() 方法查看结果。

匹配模式的符号

字符分类

缩写字符:
  1. \d :0~9 \D: except for 0~9
  2. \w: word \W:except for alphas, numbers, underscores
  3. \s: space \S:except for space
自定义字符
  1. [aeiouAEIOU]:用户自定义的字符分类; [aeiouAEIOU] except for these chracters

注意:可以使用[0-9],[a-zA-Z]来实现所有在其范围内的匹配。

任意字符
  1. 通配符:. 除了换行之外的任何字符

次数匹配:

  1. {m,n}:匹配至少 m 次,至多 n 次的前面的分组
  2. ?:匹配 0 次或 1 次的前面的分组,它放在其他匹配符后面有改成不贪心匹配的功能
  3. *:匹配 0 次或 多次的前面的分组
  4. +:匹配 1 次或 多次前面的分组

其他匹配

开头和结尾
spam:必须以 spam 开头
spam $: 必须以 spam 结尾
管道匹配
| 这个符号被叫做管道,表示可以匹配模式两边中的一种。

更加高级的匹配

为了使用更加高级的匹配,比如不区分大小写,忽略注释,匹配换行的功能,需要设置创建 Regex 模式对象的第二个参数

re.IGNORECASE用于不区分大小写的匹配:

格式:robocop = re.compile(r'robocop',re.I)

re. DOTALL 用于识别换行符的匹配

格式:robocop = re.compile(r'robocop',re.DOTALL)

re. VERBOSE 用于忽略注释的匹配

格式:robocop = re.compile(r'robocop',re.VERBOSE)

替换字符串:sub() 方法

格式:对一个 Regex 对象使用:
nameRegex = re.complie(r'Agent')
nameRegex.sub('CENSORED','Agent Alice gave the secret documents to Agent Bob')
作用:sub() 方法针对对一个 Regex 对象使用;
它含有两个参数,第一个是用于取代匹配的字符串的字符串,第二个是匹配的内容;
结果返回一个字符串。





猜你喜欢

转载自www.cnblogs.com/FBsharl/p/10205165.html
今日推荐