compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re 模块也提供了与这些方能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
re.match 尝试从字符串的起始匹配一个模式,如果不是起始匹配成功的话,match()就返回none。
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR() 它们来指定。如 re.I re.M 被设置成 I 和 M 标志:
由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r\t,等价于 \\t)匹配相应的特殊字符。
下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,魏伶优某些模式元素的含义会改变。
匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
匹配 n 个前面表达式。例如, o{2,} 不能匹配Bob中的o,但能匹配 foooood中的所有 o。o{1,} 等价于 o+。o{0,} 则等价于 o*。
前向肯定界定符。如果所含正则表达式,以 ... 表示,在当前成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。
匹配一个单词边界,也就是指单词和空格间的。例如, er\b 可以匹配never 中的 er,但不能匹配 verb 中的 er。
匹配非单词边界。er\B 能匹配 verb 中的 er,但不能匹配 never 中的 er。
匹配除 \n 之外的任何单个字符。要匹配包括 \n 在内的任何字符,请使用象 [.\n] 的模式。
首先,这是一个字符串,前面的一个r表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符。但是这个字符串里没有反斜杠,所以这个r可有可无。