1.2. 数量词的贪婪模式与非贪婪模式
正则表达式通常用于在文本中查找匹配的字符串。Python 里数量词默认是贪婪的(在少数语言里也可能是
默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:
正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。
1.3. 反斜杠的困扰
与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配
文本中的字符"\",那么使用编程语言表示的正则表达式里将需要 4 个反斜杠"\\\\":前两个和后两个分别
用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python 里的
原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用 r"\\"表示。同样,匹配一个数字的
"\\d"可以写成 r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
1.4. 匹配模式
正则表达式提供了一些可用的匹配模式,比如忽略大小写、多行匹配等,这部分内容将在 Pattern 类的工
厂方法 re.compile(pattern[, flags])中一起介绍。
2. re 模块
2.1. 开始使用 re
Python 通过 re 模块提供对正则表达式的支持。使用 re 的一般步骤是先将正则表达式的字符串形式编译为
Pattern 实例,然后使用 Pattern 实例处理文本并获得匹配结果(一个 Match 实例),最后使用 Match
实例获得信息,进行其他的操作。
# encoding: UTF-8
import re
# 将正则表达式编译成
Pattern 对象
pattern
= re.compile(r'hello')
# 使用 Pattern 匹配文本,获
得匹配结果,无法匹配时将返
回 None
match
= pattern.match('hello
world!')