Python中简单的正则表达式

来源:互联网 发布:mac 装google chrome 编辑:程序博客网 时间:2024/06/06 07:29
   我个人认为Python中的re部分比较难,我也找了一些书籍来看,主要是Python基础教程,来分享一下今天下午的学习成果。
  1. 什么是正则表达式
    正则表达式是可以匹配文本片段的模式。最简单的正则表达式就是单个字符,可以匹配其自身的。简单的说就是在文本寻找你要的东西。
  2. 简单的使用方法

    通配符:点号(.)一个点号可以匹配任何一个字符(空格,+-*%)
    转义符:\, 在re模式下一个就可以,不然的话要用两个
    选择符:|,可以在匹配的时候进行选择例如‘Python|perl’就可匹配字符‘python‘和’perl‘
    子模式:(),可以使字符的一部分,’p(ython|erl)’
    重复子模式:()?,问号前面的括号,匹配时是可以里面的内容可以没有的,

3.具体例子
line中的是主要的文本内容,
re1,re2,re3是匹配的不同的内容,分别实现的功能是查找中文,查找链接,查找标题

# coding:gb2312import re line='''<table class="infobox vevent" cellspacing="3" style="border-spacing:3px;width:22em;text-align:left;font-size:small;line-height:1.5em;">   <caption class="summary"><b>ActionScript</b></caption>   <tr>   <th scope="row" style="text-align:left;white-space:nowrap;;;">发行时间</th>   <td style=";;">1998年</td>   </tr>   <tr>   <th scope="row" style="text-align:left;white-space:nowrap;;;">实现者</th>   <td class="organiser" style=";;"><a href="/wiki/Adobe_Systems" title="Adobe Systems">Adobe Systems</a></td>   </tr>   <tr>   <tr>   <th scope="row" style="text-align:left;white-space:nowrap;;;">启发语言</th>   <td style=";;"><a href="/wiki/JavaScript" title="JavaScript">JavaScript</a>、<a href="/wiki/Java" title="Java">Java</a></td>   </tr>   </table>   '''re1=r'<th scope=.*?>(.*?)</th>'re2=r'(?<=href=\").+?(?=\")'re3=r'(?<=title=\").+?(?=\")'for z in re1,re2,re3:    rec_th=re.findall(z,line ,re.M|re.I)    if rec_th!='':        for x in rec_th:            print x

运行的结果就是
这里写图片描述

4.还有一些很好的例子
可以稍微借鉴一下,

import re href = '<p><a href="www.csdn.cn" title="csdn">CSDN</a></p>'  link = re.findall(r"(?<=href=\").+?(?=\")", href)print link 
# coding:gb2312lines = '''<table>    <tr>        <td>序列号</td><td>DEIN3-39CD3-2093J3</td>        <td>日期</td><td>2013年1月22日</td>        <td>售价</td><td>392.70 元</td>        <td>说明</td><td>仅限5用户使用</td>    </tr></table>'''import rem = re.findall(r'<td>(.*?)</td>', lines, re.I|re.M)if m:    for x in m:        print x
0 0