python基础(5)正则表达式

1,re模块
在python中,正则表达式的模块是RE
 
 
2,正则表达式中的特殊字符
 
符号           含义                                      re例子
.              匹配任何一个字符(除了NEWLINE)             b.b
^              匹配字符串的开始                            ^hello
$              匹配字符串的结束                            /bin/sh$
* 匹配0个或更多的前RE表达式 [A-Za-z0-9]*
+              匹配1个或多个前面的RE表达式                  [a-z]+\.com
?              匹配0个或1个前面的RE表达式                   hello?
{N}            匹配N个前面的RE表达式                        [0-9]{3}
{M,N}          匹配M到N个前面出现的RE表达式                 [0-9]{3,5}
[...]          匹配任何一个单一字符                         [abcd]
[...x-y...]    匹配任何一个单一字符从x到y                   [a-zA-Z]
[^...]         不匹配任何一个单一字符                       [^abcd] 非abcd
 
re1|re2        匹配符合re1和re2的字符串                     foo|bar
(...)          匹配括号中的正则表达式并保存为子组           ([0-9]{3})?
 
其他特殊字符
\d             匹配任何的数字和[0-9]一样
\D             匹配任何非数组和[^0-9]一样
\w             匹配任何数字和字母和[a-zA-Z0-9]一样\W是它的反意    [a-z]\w+
\s             匹配任何空白字符和[ \t\b\r\v\f\n]同,\S是它的反义   of\sthe
\nn            匹配以保存的子组(参考()表达式)                   price: \16
\A(\Z)         匹配字符串的起始和结束                           \AHi
\c             逐一匹配特殊字符c是特殊字符,取消特殊字符的含     \*,\n
\b(\B)         匹配单词边界\B是它的反义                         \bThe\b
 
 
3,RE模块
 
3.1 模块中的核心函数
.compile(pattern,flags=0)
编译一个正则表达式pattern到正则表达式对象regex,该对象可以用于以后的match等函数。该函数可能由于flags标记的设置而改变行为,比如使用|来添加一个匹配。
该函数保留正则表达式的对象,以便以后可以重用,这样可以提高效率,例如:
 
prog = re.compile(pattern)
result = prog.match(string)
相当于调用:
result = re.match(pattern, string)
 
.search(pattern,string, flags=0)
在字符串string 中查找正则表达式模式pattern 的第一次出现,flags 是可选标志符,如果匹配成功,则返回一个匹配对象;否则返回None

.findall(pattern,string[,flags])a 在字符串string 中查找正则表达式模式pattern 的所有(非重复)出现;返回一个匹配对象的列表

.finditer(pattern,string[, flags])b 和findall()相同,但返回的不是列表而是迭代器;对于每个匹配,该迭代器返回一个匹配对象
 
 
.split(pattern,string, max=0) 根据正则表达式pattern 中的分隔符把字符string 分割为一个列表,返回成功匹配的列表,最多分割max 次(默认是分割所有匹配的地方)。

.sub(pattern, repl, string, max=0) 把字符串string 中所有匹配正则表达式pattern 的地方替换成字符串repl,如果max 的值没有给出,则对所有匹配的地方进行替换(另外,请参考subn(),它还会返回一个表示替换次数的数值)。

.group(num=0) 返回全部匹配对象(或指定编号是num 的子组)
.groups() 返回一个包含全部匹配的子组的元组(如果没有成功匹配,就返回一个空元组)
 
 
 
4,正则表达式的应用
.编译正则表达式
由于正则表达式在进行模式匹配前,会编译成regex对象。由于正则表达式多次用于匹配,所以在匹配之前最好做预编译。而且模块会对以编译好的对象进行缓存,这样会很大程度上提高性能。
原文地址:https://www.cnblogs.com/rosesmall/p/2833528.html