#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
def re_pattern_syntax():
#dot,caret,$
# */+/?
# * 表示匹配0个到都哦个
# ab+ 表示匹配1个或多个的b
# ? 表示匹配0到1个
print re.match(r'.*','abc\nedf').group()
#点表示任意一个字符,*任意多少个,只能匹配一行字符,碰到\表示换行符号不再匹配
print re.match(r'.*','abc\edf',re.DOTALL).group()
#通过加re.DOTALL,这个点不仅仅表示任意字符还可以表示换行符
print re.findall(r'^abc','abc\habc')
print re.findall(r'^abc', 'abc\habc',re.MULTILINE)
#re.MULTILINE把字符串当多行来处理,碰到回车符当另外一行处理
print re.findall(r'abc\d$','abc1\habc2')#$表示匹配一个字符串的结束
print re.findall(r'abc\d$','abc1\habc2',re.MULTILINE)#$表示匹配一个行的结束
print re.match(r'ab*','a')
print re.match(r'ab+','abd')
print re.match(r'ab?','abc').group()
#greedy/non-greedy 贪婪和非贪婪
#{m} 匹配次数
#转义字符\用来匹配特殊字符
#[]集合
s='<H1>title</H1>'
print re.match(r'<.+>',s).group()#默认用贪婪模式匹配
print re.match(r'<(.+)>',s).group(1)#基于贪婪模式,打印出它的 group
print re.match(r'<(.+?)>',s).group()#表示用非贪婪模式匹配任意字符
print re.match(r'<(.+?)>', s).group(1)
print re.match(r'ab{2,4}','abbbbbb').group() #这样也是属于贪婪模式尽量的匹配多
print re.match(r'ab{2,4}?', 'abbbbbb').group()#这样是非贪婪模式匹配,尽量匹配少
print re.search(r'','The price is $9.9').groups()#若要匹配$匹配符号,不加、当作结束符号来处理,
print re.search(r'\$', 'The price is $9.9').groups()
print re.search(r'0[xX]([0-9A-Fa-f]{6})','The hex value is 0xFF03D6').groups()
if __name__=='__main__':
re_pattern_syntax()
####一些特殊字符的使用
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
def re_pattern_syntax():
#\number 表示前一个匹配组
print re.search(r'(\d)(\d)(\d)\1\2\3','135135').groups()
print re.search(r'(\d)(\d)(\d)\1\2\3','135135').groups()
print re.search(r'(\d{3}) \1', '135 135').groups()
#\d\D 匹配一个连字符\匹配非连字符
#\b匹配单词的开头和结尾
print re.search(r'(\d{3}-\d{4}-\d{4})','157-5923-2692').groups()
print re.search(r'(\d{3}-\d{4}-\d{4})', '157-5923-2692').groups()
print re.search(r'\b(\d{3}-\d{4}-\d{4})\b', '157-5923-2692').groups()#不合法的是无法匹配出来的
print re.search(r'(\d{3}\D\d{4}\D\d{4})', '157-5923-2692').groups()
#\s\S 空格\非空格 \f换页 \v垂直制表
print re.search(r'(\d{3}\s\d{4}\s\d{4})', '1570 5923 2692').groups()
print re.search(r'(\d{3}\S\d{4}\S\d{4})', '1570-5923-2692').groups()
#\w\W 匹配字符和非字符
print re.match(r'(\w+)\s*:\s*(\w+)', 'Name: Joey').groups()
#或略大小写
print re.match(r'(Name)\s*:\s*(\w+)', 'NAME: Joey',re.IGNORECASE).groups()
#re.VERBOSE 注释/re.compile
s='the number is 20.33'
r=re.compile(r'''
\d+ #整数部分
\.? #小数部分
\d* #小数部分,可选
''',re.VERBOSE)
print re.search(r,s).group()
版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任
本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1881554