正则表达式(re)模块从 Python 1.5 开始加入,并且采取了 Perl 风格的正则表达式匹配模式(patterns)。在初期的 Python 版本中,正则表达式使用的是 regex 模块,它使用的是 Emacs 风格的匹配模式。在 Python 2.5 中,regex 模块被完全移除。
正则表达式(称为,REs,regexes,或 regex patterns)本质上是1门小的,非常特别的嵌入到 Python 中的编程语言,在 Python 的 re 模块中。你可使用这门小的语言来指定你想匹配的字符串的集合符合的规则;这个字符串集合可能包括英文句子,或电子邮件地址,Tex 命令,或其他你想要的东西。然后你就能够问类型这样的问题:“这个字符串匹配给定的模式吗?”,或:“这个字符串中有某些部份匹配这个模式吗”。你也能够使用正则表达式(REs)通过量种方式来修改或分割字符串。
正则表达式模式会被编译成1串字节码,然后传给1个由 C 言语写的匹配引擎来履行。对高级用法而言,可能需要更多留意对1个给定的 RE 正则表达式引擎会如何履行,以何种方式写出的正则表达式产生的字节码履行更快。优化不是本文要讨论的内容,由于这需要你对匹配引擎内部机制有很好的理解。
正则表达式言语非常小,且有限制,其实不是所有字符串处理的任务都能使用正则表达式完成。还有1些任务可使用正则表达式完成,但是却很复杂。这类情况下,你还是最好写Python 代码来处理;虽然这些代码处理速度比复杂的正则表达式慢,但是却更好理解。
我们将从最简单的正则表达式开始学起。由于正则表达式是用来处理字符串的,我们就从最多见的任务——匹配字符,开始。
大多数字母和字符都会简单的匹配它们本身。例如,正则表达式 test 会精确的匹配字符串 test(你可以开启大小写不敏感模式,来使得这个 RE 也能够匹配字符串 Test 或 TEST,这个后面会再提)。
这条规则也有例外:1些字符是特殊的元字符,它们不会匹配其本身。它们的出现表明应当匹配1些不同寻常的东西,或它们会通太重复正则表达式的其他部份或改变其他部份的意义来影响正则表达式。本文的大部份是在讨论这些元字符和它们的用处。
上一篇 能在多种前端框架下使用的表格控件
下一篇 信号量与互斥锁