Python正则表达式练习

来源:互联网 发布:淘宝评价过了怎么截图 编辑:程序博客网 时间:2024/05/26 09:53

.表示匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。

import rea = 'xy123'b = re.findall('x...',a)c = re.findall('x..',a)print(b)print(c)

输出结果:

['xy12']['xy1']

*的使用举例 匹配前一个字符0次或无限次

import rea = 'xyxy123xx456xxx789'b = re.findall('x*',a)print(b)

实验结果:

['x', '', 'x', '', '', '', '', 'xx', '', '', '', 'xxx', '', '', '', '']

+匹配前一个元字符1到多次

import rea = 'xyxy123xx456xxx789'b = re.findall('x+',a)print(b)

实验结果:

['x', 'x', 'xx', 'xxx']

?匹配前一个元字符0到1次

import rea = 'xyxy123xx456xxx789'b = re.findall('x?',a)print(b)

实验结果:

['x', '', 'x', '', '', '', '', 'x', 'x', '', '', '', 'x', 'x', 'x', '', '', '', '']

{m,n}匹配前一个元字符m到n次

import rea = 'xyxy123xx456xxx789'b = re.findall('x{1,2}',a)print(b)

实验结果:

['x', 'x', 'xx', 'xx', 'x']

\转义字符,跟在其后的字符将失去作为特殊元字符的含义,例如\.只能匹配.,不能再匹配任意字符

import rea = 'x*yxy123xx456xxx789'b = re.findall('x\*',a)print(b)

实验结果:

['x*']

[]字符集,一个字符的集合,可匹配其中任意一个字符

import rea = 'x*yxay123xx456xxx789'b = re.findall('x[*a]y',a)print(b)

实验结果:

['x*y', 'xay']

re.S使 . 匹配包括换行在内的所有字符
如果没有re.S会出现什么情况?

import rea = """<body>QQQQ<p>AAA</p><p>bbbb</p></body>"""b = re.findall('<body>(.*?)</body>',a)print(b)

实验结果:

[]

添加re.S则会出现什么结果?

import rea = """<body>QQQQ<p>AAA</p><p>bbbb</p></body>"""b = re.findall('<body>(.*?)</body>',a,re.S)print(b)

实验结果:

['\nQQQQ\n<p>AAA</p>\n<p>bbbb</p>\n']

re.I使匹配对大小写不敏感

import rea = 'x*yXay123xx456xxx789'b = re.findall('x[*a]y',a,re.I)print(b)

实验结果:

['x*y', 'Xay']

re.M多行匹配,影响 ^ 和 $

import retext="""<div> aa </div>Start  hi python2.6 is out<div>bb</div>"""reg='<div>([\w\W]*?)</div>'p = re.compile(reg)m=p.search(text,re.M)if m:        print("\n matched")        print(m.group())

实验结果:

 matched<div>bb</div>

如果没有re.M

import retext="""<div> aa </div>Start  hi python2.6 is out<div>bb</div>"""reg='<div>([\w\W]*?)</div>'p = re.compile(reg)m=p.search(text)if m:        print("\n matched")        print(m.group())

实验结果:

 matched<div> aa </div>
原创粉丝点击