# re模块中的方法 import re # findall() 返回所有满足匹配的结果放到列表中 # search() 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象, 如果字符串没有匹配,则返回None。 # 可以通过调用group()方法得到匹配的字符串 # match() 同search,相当于在search的基础上加上^,只匹配开头的 # split() 示例来解释 ret = re.split('[ab]', 'abcd') print(ret) # 结果为 ['', '', 'cd'] # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割 # 注意:如果分割符是字符串的开头,则会产生一个'' # re.sub() 参数:源内容,新内容,目标字符串,需要替换的次数 ret = re.sub('d+', 'A', 'jack2455asf54kll987', 2) # 将字符串中的数字替换为A,替换2次 print(ret) # 结果为 jackAasfAkll987 # re.subn() 返回元组,元组中的内容为替换后的结果与替换的次数 ret = re.subn('d+', 'A', 'jack2455asf54kll987') print(ret) # 结果为 ('jackAasfAkllA', 3) # re.complie() 将匹配规则放到对象中,使用时可以多次调用该规则 com = re.compile('d+') ret = com.findall('asdf1565asdl;fk14asdf588aa') print(ret) # finditer() 返回所有满足匹配的结果放到一个迭代器中 ret = re.finditer('d', 'ds3sy4784a') print(ret) # <callable_iterator object at 0x10195f940> print(next(ret).group()) print(next(ret).group()) # 注意 ret = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com') print(ret) # ['oldboy'] 这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可 ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com') # ?: 代表取消权限 print(ret) # ['www.oldboy.com']