1.re.match(p,text)
找到后马上返回,从头开始匹配
2.re.search(p,text)
找到后马上返回
3.re.findall(p,text)
寻找多个,返回找到的列表
4.re.split(p,text)
找到匹配模式,然后分开
5.re.sub(p,s,text)
替换
找到模式的字符串替换成s
6.编译模式对象
pattern=re.compile(pa)
results=pattern.match(text)
7. text = 'c++ python2 python3 perl ruby lua java javascript php4 php5 c'
8.元字符
*零个或者多个
^从头开始匹配
+重复一次或多次
$结尾匹配
.匹配任意字符
[]范围eg:[a-zA-Z]
?匹配0个或1个
{}匹配次数范围
^在[]中时,表示非
|表示或者
9.
\w [a-zA-Z0-9_] \W
\d [0-9] \D
\s [ \t\n\r\f\v] \S
\b 单词边界(单词的开头或结尾)eg:
re.findall(r'\bp[^0-9]+',text)==>[‘python', 'python', 'perl ruby lua java javascript php', 'php']
re.findall(r'p[^0-9]\b',text) ==>['pt']
10.(非)贪婪模式(尽可能多/少的匹配)
*?
+?
re.findall(r'c[a-z\+]*',text)==>['c++', 'cript', 'c']
re.findall(r'c[a-z\+]*?',text) ==>['c', 'c', 'c']
11.分组
()
(?P<name>pattern)
pattern = re.compile(r'(?P<name>p[a-zA-Z]+)(?P<version>[0-9])')
results = pattern.search('python2')
print results.groupdict()==>{'version': '2', 'name': 'python'}
results = pattern.findall(text)==>[('python', '2'), ('python', '3'), ('php', '4'), ('php', '5')]
12.编译模式
a = re.compile(r"""\d + # 整数部分
\. # 小数点
\d * # 小数部分
""", re.X)
去掉空格、换行符等,方便加注释
b = re.compile(r"\d+\.\d*")
##################################常用匹配#####################################
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
eg:
w=u'我是Monkey的爸爸'
p=re.compile(ur"[\u4e00-\u9fa5]")
p.findall(w) ==>[u'\u6211', u'\u662f', u'\u7684', u'\u7238', u'\u7238']
匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行
匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字
匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位
匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用
13.\w等在[]中时,需要在其他字符后面
false:[\w-_]
right:[-_w]