python正则表达式(6)--split、sub、escape方法
1.re.split
语法:
re.split(pattern, string[, maxsplit=0, flags=0])
参数:
pattern 匹配的正则表达式
string 要匹配的字符串。
maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
>>>import re
>>> re.split('\W+', 'runoob, runoob, runoob.')
['runoob', 'runoob', 'runoob', '']
(1)以分组为分割符的时候,分组内容也会被保存下来
>>> re.split('(\W+)', ' runoob, runoob, runoob.')
['', ' ', 'runoob', ', ', 'runoob', ', ', 'runoob', '.', '']
>>> re.split('\W+', ' runoob, runoob, runoob.', 1)
['', 'runoob, runoob, runoob.']
(2)可同时使用多个分隔符,分隔符,和.都会被切割
>>> re.split('[,\.]',r'hello,Tom.how are you')
['hello', 'Tom', 'how are you']
(3)对于一个找不到匹配的字符串而言,split 不会对其作出分割
>>> re.split('a*', 'hello world')
['hello world']
2.sub方法
语法:
re.sub(pattern, repl, string, count=0, flags=0)
pattern.sub(repl, string[, count = 0])
参数:
- pattern : 正则中的模式字符串。
- repl : 替换的字符串,也可为一个函数。
- string : 要被查找替换的原始字符串。
- count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
1) 当repl是一个字符串
可以使用\id或\g<id>、\g<name>引用分组,但不能使用编号0。
2) 当repl是一个方法
它必须传一个Match对象,并必须返回一个字符串用于替换(返回的字符串中不能再引用分组)。
(2)subn方法
这个函数跟sub函数用法差不多,只是它有一个额外的特征,结果是返回一个tuple,tuple第 一个元素是替换后的新字符串,第二个元素是替换的次数。
import re
def add(m):
v = int(m.group(0))
return str(v + 1)
p = re.compile("(\d+)")
result = p.subn(add, "1 2 3 4 5")
print result
>>>('2 3 4 5 6', 5)
3.re.escape方法
可以将字符串中所有可能被解释为正则运算符的字符进行转译。
>>> re.escape('www.python.org')
'www\\.python\\.org'