1 #正则表达式 2 # 用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的 3 #常用正则表达式 4 # 字符 5 # . 匹配除了换行符以外的任意字符 6 # \w 匹配字母或数字或下划线 word 7 # \s 匹配任意的空白符 space 8 # \d 匹配数字 digit 9 # \n 匹配一个换行符 next 10 # \t 匹配一个制表符 table 11 # \b 匹配一个单词的结尾 12 # ^ 匹配字符串的开始 13 # $ 匹配字符串的结尾 14 # \W 匹配非字母或数字或下划线 15 # \D 匹配非数字 16 # \S 匹配非空白符 17 # a|b 匹配字符a或字符b 18 # () 匹配括号内的表达式,也表示一个组 19 # [] 匹配字符组中的字符 20 # [^] 匹配除了字符组中字符的所有字符 21 # 量词 22 # * 重复零次或更多次 23 # + 重复一次或更多次 24 # ? 重复零次或一次 25 # {n} 重复n次 26 # {n,} 重复n次或更多次 27 # {n,m} 重复n到m次 28 #表达式全集http://tool.oschina.net/uploads/apidocs/jquery/regexp.html 29 import timeit 30 #timeit.timeit是用来统计程序执行的时间 31 print timeit.timeit(setup='''import re; reg = re.compile('<(?P<tagname>\w*)>.*</(?P=tagname)>')''', stmt='''reg.match('<h1>xxx</h1>')''', number=1000000) 32 #优先编译成正则对象,然后进行匹配, 33 #这样程序效率更高 34 print timeit.timeit(setup='''import re''', stmt='''re.match('<(?P<tagname>\w*)>.*</(?P=tagname)>', '<h1>xxx</h1>')''', number=1000000) 35 36 # r表示raw的简及raw string 意思是原生字符,也就是说是这个字符串中间的特殊字符不用转义 37 38 # re.compile(pattern[, flags]) 39 #表示将字符串的正则表达式编译成正则对象,第二个参数flag是匹配模式 40 #取值可用按位或者运算符“|”表示同时生效 41 #re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同) 42 #M(MULTILINE): 多行模式,改变'^'和'$'的行为 43 #S(DOTALL): 点任意匹配模式,改变'.'的行为 44 #L(LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定 45 #U(UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性 46 #X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。 47 #以下两个正则表达式等价: 48 #a = re.compile(r"""\d + # the integral part 49 # \. # the decimal point 50 # \d * # some fractional digits""", re.X) 51 # b = re.compile(r"\d+\.\d*") 52 53 import re 54 reg=re.compile(r'abc.*') 55 print(type(reg)) 56 print(reg)