import re # findall('正则表达式',‘待匹配的字符串’) #返回匹配到字符串,并存放在列表中 text = 'abcdefg' res = re.findall('a..d', text) print(res) # ['abcd'] # 函数会在字符串内按规则匹配,当找到第一个匹配结果时就结束查找,然后返回一个包含匹配信息的对象,该对象可以 通过 调用group()方法 得到匹配的字符串, # 如果没有匹配到字符串,则返回None ret = re.search('abc', 'this is abcABC').group() print(ret) # 结果 : 'abc' # compile,先将正则编译后放入对象,后面可重复使用,当多次使用同一正则时,可提高效率 obj = re.compile('d{3}') # 将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字 ret = obj.search('abc123eeee') # 正则表达式对象调用search,参数为待匹配的字符串 print(ret.group()) # 结果 : 123 # match 在字符串开始处 就按规则匹配,其它 与search()函数使用方法一样 ret = re.match('this', 'this is abcABC').group() print(ret) # 结果 : 'this' # finditer ,跟findall功能相同,返回的是存放结果的迭代器 ret = re.finditer('d', 'ds3sy4784a') print(ret) # <callable_iterator object at 0x10195f940> print(next(ret).group()) # 查看第一个结果 '3' print(next(ret).group()) # 查看第二个结果 '4' print([i.group() for i in ret]) # 查看剩余的匹配结果 ['7', '8', '4'] # sub 将数字替换成'H',参数1表示只替换1个 ret = re.sub('d', 'H', 'eva3egon4yuan4', 1) print(ret) # evaHegon4yuan4 # subn 将数字替换成'H',返回元组(替换的结果,替换了多少次),即('evaHegonHyuanH', 3) ret = re.subn('d', 'H', 'eva3egon4yuan4') print(ret) # ('evaHegonHyuanH', 3) # split 以字符分隔字符串成列表 ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割 print(ret) # ['', '', 'cd'] ret = re.split("d+", "eva3egon4yuan") print(ret) # 结果 : ['eva', 'egon', 'yuan'] ret = re.split("(d+)", "eva3egon4yuan") print(ret) # 结果 : ['eva', '3', 'egon', '4', 'yuan'] # 在匹配部分加上()之后所切出的结果是不同的, # 没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项, # 这个在某些需要保留匹配部分的使用过程是非常重要的。