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
浙公网安备 33010602011771号