介绍
就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,
(在Python中)它内嵌在Python中,并通过 re 模块实现。
你可以为想要匹配的相应字符串集指定规则;该字符串集可能包含英文语句、
e-mail地址、TeX命令或任何你想搞定的东西。然后你可以问诸如“这个字符串
匹配该模式吗?”或“在这个字符串中是否有部分匹配该模式呢?”。你也可以使
用 RE 以各种方式来修改或分割字符串。
字符匹配(普通字符,元字符):
普通字符:大多数字符和字母都会和自身匹配
>>> re.findall('alex','yuanaleSxalexwupeiqi')
['alex']
----------------
s='I get A, I get B ,I get C'
re.sub("get","got",s)
'I got A, I got B ,I got
subn
-------------------
s='I got A, I got B ,I get C'
re.split("\s*,\s*", s )
-------------------
re.split("[bc]",'abcdef')########?
--------------------------------------------------------------
元字符:. ^ $ * + ? { } [ ] \ | ( )
\:反斜杠后边跟元字符去除特殊功能,反斜杠后边跟普通字符实现特殊功能。
\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
\S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
??? re.findall('\d.\d','5.4')
[]:元字符[]表示字符类,在一个字符类中,只有字符^、-、]和\有特殊含义。
字符\仍然表示转义,字符-可以定义字符范围,字符^放在前面,表示非.
函数:
1 search(pattern, string[, flags]) 在字符串中寻找模式
2 match(pattern, string[, flags]) 在字符串的开始处匹配模式
Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息。
属性:
string: 匹配时使用的文本。
re: 匹配时使用的Pattern对象。
pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。
方法:
group([group1, …]):
获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
groups([default]):
以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
groupdict([default]):
返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。
start([group]):
返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0。
end([group]):
返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。
span([group]):
返回(start(group), end(group))
3 split( rule , target [,maxsplit] ) 根据模式的匹配项来分割字符串
4 findall(pattern, string) 列出字符串中模式的所有匹配项
5 sub ( rule , replace , target [,count] )
6 finditer(pattern, string) 返回迭代器
7 compile(pattern[, flags]) 根据包含正则表达式的字符串创建模式对象
>>> import re
>>> re.match("c", "abcdef")
>>> re.search("c","abcdef")
<_sre.SRE_Match object at 0x00A9A988>
>>> re.match(