- re的matche方法和search方法
#正则对象的match匹配 import re reg = re.compile(r'(hello w.*)(hello Y.*)') print(dir(reg)) a = 'hello world hello YangLing' result = reg.match(a) print(result) print(result.group()) b = 'aa' + a print(b) result2 = reg.match(b) print(result2) #正则对象的search方法做一个比较 m = 'kdsjfigheigjewijsgiegekdsjgeighse' print('#'*30) result3 = reg.search(b) print(result3) print(result3.groups())
- re的split,findall,finditer方法
re.split(pattern, string[, maxsplit])
按照能够匹配的子串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定将全部分割。
re.findall(pattern, string[, flags])
搜索string,以列表形式返回全部能匹配的子串
re.finditer(pattern, string[, flags])
搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器
import re p1 = re.compile(r'\d+') a_str = 'one1two2thress3four4' #正则对象的split方法,使用正则匹配进行分割字符串 #最后以列表的形式返回回去 print(p1.split(a_str)) #正则对象那个的findall方法,来查找符合对象的字符串 #最后是以列表的形式返回回去 print(p1.findall(a_str)) for i in p1.finditer(a_str): print(i.group())
import re prog = re.compile(r'(?P<tagname>abc)(\w*)(?P=tagname)') result = prog.match('abclfjlad234sjldabc') #finditer 迭代以后每个对象都是一个matche对象 print(dir(result)) print(result) print(result.groups()) print(result.group(2)) print(result.group(1)) print('#'*30) print(result.group('tagname')) #matche对象的group返回一个元组,下标是以1开头。 print(result.groupdict())
- re的match对象
re模块是python中处理正则表达式的一个模块,通过re模块的方法,把正则表达式pattern编译成正则对象,以便使用正则对象的方法。那为什么要使用re模块来把正则表达式搞成正则对象呢,最主要的是可以提高代码的执行效率。
正则匹配是,优先编译成正则对象,然后再进行匹配,这样程序的效率更高
编译正则对象
正则匹配总写一个r是什么意思?
r表示raw的简及raw string 意思是原生字符,也就是说是这个字符串中间的特殊字符不用转义
比如你要表示‘\n’,可以这样:r'\n'
但是如果你不用原生字符 而是用字符串你得这样:‘\\n’
关于match对象的常用属性和方法
match对象是一次匹配的结果,包含了很多关于此次匹配的信息
属性:
1.string: 匹配时使用的文本。
2.re: 匹配时使用的Pattern对象。
方法:
1.group([group1, …]):
获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
2.groups([default]):
以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
3.groupdict([default]):
返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。
import re # 匹配如下内容:单词+空格+单词+任意字符 m = re.match(r'(\w+) (\w+)(?P<sign>.*)', 'hello world!') print "m.string:", m.string print "m.re:", m.re print "m.group():", m.group() print "m.group(1,2):", m.group(1, 2) print "m.groups():", m.groups() print "m.groupdict():", m.groupdict()