实例
描述
[Pp]ython
匹配 "Python" 或 "python"
rub[ye]
匹配 "ruby" 或 "rube"
[aeiou]
匹配中括号内的任意一个字母
[0-9]
匹配任何数字。类似于 [0123456789]
[a-z]
匹配任何小写字母
[A-Z]
匹配任何大写字母
[a-zA-Z0-9]
匹配任何字母及数字
[^aeiou]
除了aeiou字母以外的所有字符
[^0-9]
匹配除了数字外的字符
特殊字符类
实例
描述
.
匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
\d
匹配一个数字字符。等价于 [0-9]。
\D
匹配一个非数字字符。等价于 [^0-9]。
\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w
匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W
匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
1.3re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.match(pattern, string, flags = 0)
pattern 正则表达式
string 匹配的字符串
flags 标志位,用来控制匹配方式,下文会讲
直接上程序:
import string,re r = "abc" #正则表达式 if re.match(r,"abc"): #匹配 print 'done' else: print 'defeat'
结果:
done
可以根据上面各表给出的用法,多练练:
import string,re r = "a.c" #正则表达式 . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。 if re.match(r,"abc"): print re.match(r,"abc") print 'done' else: print 'defeat'
结果:
<_sre.SRE_Match object at 0x01dd6158>
done
注意这里不是显示匹配成功的字符串,re.match() 返回的是一个对象,不成功返回的是none.
我们可以通过group(num)或groups()匹配对象函数来获取匹配表达式。
匹配对象方法
描述
group(num=0)
匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()
返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
程序:
import string,re r = "a.c" if re.match(r,"abc"): line = re.match(r,"abc") print line.group() else: print 'defeat'
结果:
abc
1.3re.search函数
re.search() 扫描整个字符串并返回第一个成功的匹配
re.search(pattern, string, flags=0)
pattern 正则表达式
string 匹配的字符串
flags 标志位,用于控制匹配方式
和re.match()一样,匹配成功re.search方法返回一个匹配的对象,否则返回None。
直接上程序:
import string,re r = "abc" s = 'aacawcabc' if re.search(r,s): line = re.search(r,s) print line.group()
结果:
abc
注意:
re.match()和re.search()的区别: