正则表达式是可匹配文本片段的模式。简单的正则表达式为普通字符串,与它自己匹配。 换而言之,正则表达式'python'与字符串'python'匹配。你可使用这种匹配行为来完成如下工作: 在文本中查找模式,将特定的模式替换为计算得到的值,以及将文本分割成片段。
通配符
正则表达式可与多个字符串匹配,你可使用特殊字符来创建这种正则表达式。例如,句点与 除换行符外的其他字符都匹配,因此正则表达式'.ython'与字符串'python'和'jython'都匹配。 它还与'qython'、'+ython'和' ython'(第一个字符为空格)等字符串匹配,但不与'cpython'、 'ython'等字符串匹配,因为句点只与一个字符匹配,而不与零或两个字符匹配。 句点与除换行符外的任何字符都匹配,因此被称为通配符(wildcard)。
对特殊字符进行转义
普通字符只与自己匹配,但特殊字符的情况完全不同。例如,假设要匹配字符串'python.org',可以直接使用模式'python.org'吗?可以,但它也与'pythonzorg'匹配(还记得吗? 句点与除换行符外的其他字符都匹配),这可能不是你想要的结果。要让特殊字符的行为与普通 字符一样,可对其进行转义:像第1章对字符串中的引号进行转义时所做的那样,在它前面加上 一个反斜杠。因此,在这个示例中,可使用模式'python\\.org',它只与'python.org'匹配。
请注意,为表示模块re要求的单个反斜杠,需要在字符串中书写两个反斜杠,让解释器对其 进行转义。换而言之,这里包含两层转义:解释器执行的转义和模块re执行的转义。实际上,在 有些情况下也可使用单个反斜杠,让解释器自动对其进行转义,但请不要这样依赖解释器。如果 你厌烦了两个反斜杆,可使用原始字符串,如r'python\.org'。
字符集
匹配任何字符很有用,但有时你需要更细致地控制。为此,可以用方括号将一个子串括起, 创建一个所谓的字符集。这样的字符集与其包含的字符都匹配,例如'[pj]ython'与'python'和 'jython'都匹配,但不与其他字符串匹配。你还可使用范围,例如'[a-z]'与a~z的任何字母都匹 配。你还可组合多个访问,方法是依次列出它们,例如'[a-zA-Z0-9]'与大写字母、小写字母和 数字都匹配。请注意,字符集只能匹配一个字符。
要指定排除字符集,可在开头添加一个^字符,例如'[^abc]'与除a、b和c外的其他任何字符 都匹配。








暂无数据