python之re模块

  字符

.    匹配除\n外的任意字符
\    转义字符,使后一个字符改变原来的意思
[]    字符集(字符类),对应字符集中的任意字符

# _*_ coding:utf-8 _*_
import re

my_str = '''konmgzhagen.com.cn
            kongyicheng.com.cn'''

# 点不能匹配换行\n(这一条匹配不到)
dot = re.search('cn.*kong',my_str).group()

# \可将点转成真正的字符
Escape = re.search('kong.*\.cn',my_str).group()
print Escape

# 以o开头,后面是n或m的字符串
chartSet = re.search('o[nm]',my_str).group()
print chartSet

结果:
AttributeError: 'NoneType' object has no attribute 'group'
kongyicheng.com.cn
on

  预定义字符集

\d    数字[0-9]
\D    非数字

\s     空格       
\S    非空格

\w    单词字符
\W    非单词字符

  数量词

*          匹配前一个字符0或无限次
+          匹配前一个字符1或无限次
?         匹配前一个字符0或1次
{m}        匹配前一个字符m次
{m,n}      匹配前一个字符m到n次

  边界匹配

^     匹配字符串开头
$     匹配字符串结尾
\A    仅匹配字符串开头
\Z    仅匹配字符串结尾

  常用的re模块方法

re.match()    从字符串的开头匹配,匹配一次
re.search()    从字符串的任意位置开始匹配,匹配一次
re.findall()     从字符串的任意位置开始匹配,返回一个列表
re.finditer()   从字符串的任意位置开始匹配,返回一个迭代器,适合大数量的匹配

# _*_ coding:utf-8 _*_
import re

my_str = 'I am python modules test for re modules am'
print re.match('I am',my_str).group()
print re.search('am',my_str).group()
print re.findall("modules",my_str)
for e in re.finditer("modules",my_str):
print e.group()

结果

I am
am
['modules', 'modules']
modules
modules

  

posted on 2017-01-17 10:25  孔扎根  阅读(438)  评论(0编辑  收藏  举报

导航