正则(一)

 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)

 

posted @ 2017-11-15 09:56  依哈  阅读(134)  评论(0编辑  收藏  举报