#-*- coding:utf-8 -*- #Author:Hy #@Time :2018/4/1420:47 import re # . 通配符 print(re.findall(".txt", "helelloasdsaghdsgaldgxa.txtbtxtctxt")) # ^ 只在开头匹配 print(re.findall("^Hello", "Hellohisdghaidhasid")) # $ 只在结尾匹配 print(re.findall("id$", "helolokdasjdashjduahduhid")) # {X,Y}重复指定次数 print(re.findall("a{2,4}", "abaabaaabaaaabaaaaabaaaaaaabaaaaaaaab")) # ? 重复0或者1次 print(re.findall("a?","abcdefagasjdhad")) # * 重复0到无穷次 print(re.findall("a*", "abaabaaabaaaabaaaaabaaaaaaabaaaaaaaab")) # + 重复1到无穷次 print(re.findall("a+", "abaabaaabaaaabaaaaabaaaaaaabaaaaaaaab")) # 在后部加上?则是懒匹配 print(re.findall("a+?", "abaabaaabaaaabaaaaabaaaaaaabaaaaaaaab")) # \ 转义字符 可以吧元字符变为普通字符 print(re.findall("a\+b", "a+ba+c+a+da+b")) # \ 转义字符 \d数字 \D非数字 \w 字母 \W 非字母 \s 空白符 \S非空白符 # \b 后边是特殊字符的 print(re.findall(r"a\b", "a*a@a$accda ad a")) # [] 或 它是[]内部的每个字符和前边整体进行匹配 其内默认所有字符都是普通字符 print(re.findall("ab[cd]", "ab abc abd abcd axxx asasda")) # | 或 它是以|分割的每一个都是单独整体进行匹配 print(re.findall("ab|cd|ef|gh", "aaaab abcdeffghdfgdasdbashdbh")) #() 分组 它是用来把匹配出来的字符进行分组的 #re.search 只匹配第一个,返回值是一个对象 标注了匹配内容的位置和内容本身 .group是显示匹配的内容 print(re.search(r"(?P[a-z]+)(?P [0-9]+)", "wdn22why11ydb23hyn77").group()) print(re.findall("(\d+)(\w+)(\s+)", "123hashdh asduh2771233 123jasd h137bnasd u123y 2hj")) #re.match 同上 不过只匹配开头 print(re.match("hello","helloaduashduhasduiha").group()) #re.split 指定以某种方式切割字符串 如下表示的是以空格和|切割 被切掉的就没了 #如果切割的内容左边或者右边没有 切出来的有空串 print(re.split("[ |]","a b c de fg asd eb asd|asdasaf ")) #re.sub 替换字符串 可以指定匹配次数 如果是负数和0 则无意义。。。 print(re.sub("a", "b", "aaaaaaaaaaaaaaaa", 3)) #re.subn 返回值是一个元组 返回替换的结果同时返回替换的次数 print(re.subn("a", "b", "aaaaaaaaaaaaaaaa", 3)) #re.compile 返回已经制定好的匹配规则 com = re.compile("\d+") print(com.findall("SD3HA4SU6K78DH")) #re.findter 返回的是一个迭代器 ret = re.finditer("ab|cd|ef|gh", "aaaab abcdeffghdfgdasdbashdbh") for date in ret: print(date.group()) #在findall中 默认优先把分组中的内容显示出来 但匹配内容是完整的 print(re.findall("www\.(qq|163|sin)\.com", "asdg www.baidu.com www.hao123.com www.qq.com www.sin.com www.163.com")) #在优先级的元字符后面加上?:可以去掉优先级 print(re.findall("www\.(?:qq|163|sin)\.com", "asdg www.baidu.com www.hao123.com www.qq.com www.sin.com www.163.com"))