# 正则表达式
前面HTML中已经讲解了RE的表示方式,此处不再累赘。需要可返回阅读:
- 一套规则,可以在字符串文本中进行搜查替换等- 正则常用方法:- match:从开始位置开始查找,一次匹配 - search:从任何位置查找,一次匹配 - findall: 全部匹配,返回列表 - finditer:全部匹配,返回迭代器 - split: 分割字符串,返回列表 - sub: 替换- 匹配中文 - 中文unicode范围主要在[u4e00-u9fa5] 案例28- 贪婪,非贪婪模式 - 贪婪模式:尽可能多的匹配 - 非贪婪模式:尽可能少的匹配 - python里,默认为贪婪模式 - 例子:正则:ab* abbbbbbcccccc - 贪婪模式:abbbbbb - 非贪婪模式:a
实例1.group和span方法
import res = r([a-z]+) ([a-z]+)pattern = pile(s, re.I) # I标志忽略大小写m = pattern.match("Hello world wide web")# 表示返回匹配成功的整个子串s = m.group(0)print(s)# 返回匹配成功,整个子串的跨度a = m.span(0)print(type(a))print(a)# 表示第一个分组的匹配成功的子串s = m.group(1)print(s)# 表示第二个分组的匹配成功的子串的跨度s = m.span(1)print(s)# 等价(m.group(1),m.group(2))s = m.groups()print(s)
实例2.findall和finditer方法
import re\findall\s = r\d+pattern = pile(s)m = pattern.findall("i am 18 years old and 185 height")print(m)m = pattern.finditer("i am 18 years old and 185 height")print(type(m))for i in m:print(i.group())
实例3.中文\u4e00-\u9fa5的提取。
import re\findall\hello = u您好,世界!s = r[\u4e00-\u9fa5]+pattern = pile(s)m = pattern.findall(hello)print(m)
实例4.search方法的应用
import re\search\s = r\d+pattern = pile(s)m = pattern.search("one12two34three56")print(m.group())# 从第10下标到40下标个之间搜索m = pattern.search("one12two34three56", 10, 40)print(m.group())
想了解更多精彩内容,快来关注Python学习交流