正则表达式&re模块

正则表达式:
功能:字符串模糊匹配查询
元字符:. ,^, $, *, +, ?, {}, [ ],| ( ),\
  • . 通配符点:匹配除换行符以外的任意一个符号
  • ^:只匹配字符串的开始位置
  • $:只匹配字符串的末尾位置
  • *: 重复(0,+∞)
  • +:重复 [1,+∞)
  • ?:重复 [0,1]
  • {}:重复指定次数{m,n}
\:转义符
     转义符跟元字符,元字符变普通符号
     转义符加普通符号,有特殊含义
  • \d  0-9任意数字
  • \D  非数字
  • \w 任意字母数字 [azAZ0-9-]
  • \W 非数字字母
  • \s  空格
  • \b  匹配特色字符边界,比如空格,&,#等
\b在assic码里是响铃符
>>> re.findall(r'c\\l','abc\le')
['c\\l']
>>> re.findall('c\\\\l','abc\le')
['c\\l']
>>> re.findall('c\\\l','abc\le')
['c\\l']
>>> 
 
[ ]字符集:多选一,“或”
字符集中只有三个特殊符号: - ^ \ 
  • - :表示范围
  • ^:取反
  • \:转义符依然有效
管道符:|  或
re.findall('-?\d+\.?\d*','234,-45,8.9,-7.9,6')
 
贪婪匹配:按规则尽可能多多匹配内容
>>> import re
>>> res=re.findall('abc+','abcccccdvd')
>>> print(res)
['abccccc']
非贪婪模式:在规则后加’?’ 切换成非贪婪模式,在该模式下,按着最小重复数匹配

s="<div>yuan<img></div><a href=""></div>"
#
# ret=re.findall("<div>.*?</div>",s) # <div>yuan<img></div><a href=></div>
# print(ret)

# ret=re.search("<div>.*?</div>",s) # <div>yuan<img></div><a href=></div>
# print(ret)

几个常用的非贪婪匹配Pattern
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
.*?的用法:
--------------------------------

. 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:
.*?a

就是取前面任意长度的字符,到底一个 a 出现
 
Re模块
():
分组
  分组后查找后只显示分组里的内容
  显示全部的内容在分组括号里加上’?:’
有名分组:
 res=re.search('(?P<year>20\d{2})-(?P<mouth>[01]\d)','2014-08')
>>> res.group('year')
'2014'
>>> res.group('mouth')
'08'

re.findall(pattern, str,flag)

===>结果是个列表
===>优先筛选(分组的情况)
 
Re.search(pattern, str,flag)
==>只匹配第一个符合条件
==>匹配成功,返回对象。匹配失败,返回None
 
Re.match(pattern, str,flag)
==>只从开始位置匹配符合条件
==>匹配成功,返回对象。匹配失败,返回None
 
re.split(pattern,str,max)
Max:最大分割次数
 
re.compile(pattern,flag)编译 返回一个可调用的对象
 obj=re.compile("\d+") ret=obj.findall("akhsd4325asdk43")   #  re.findall("\d+","") print(ret)

Re.finditer( )  返回迭代器对象

# ret=re.finditer("\d+","dasfjk324khk4234kj234hkj234hkj234kj234k2j34hk2j3h4")
# print(ret)
#
# print(next(ret).group())

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2017-06-27 16:43  皖心  阅读(230)  评论(0编辑  收藏  举报