学习正则式(现学现卖)

自己一直没有正儿八经的学过正则式,虽知道原理,却一直没有咋用过。近来项目要用。所以只好现学。

首先用python写,建立一个文件。把乱七八糟的字符串往里丢呀。做了一个小实验,感觉与犹未尽。于是随便开了一个网页,找到源码。指定一行,然后写pattern.

我写的pattern比较简单。因为本来就简单。

比如你想匹配这样一段:

          
 

如果<div class ="pd-dload" >就出现过一次那就很简单。(多次的我还没有遇到,所以没有解决)pattern的最后结尾为</div>。那么应该是'<div class ="pd-dload" >XOXOXOXOXOX</div>'的形式,其中的那段怎么写呢?/w是匹配所有的字符[a-zA-Z0-9_],那么先用这个<div class ="pd-dload" >[/w]*?</div>,这里*?在python代表最小匹配,例如<abcd>siisis<ss>这样一个串,如果写<[/w]*>为其pattern,其中的>就无法匹配,但是你写<[/w]*?>就可将<abcd>匹配成功。

代码这样写:

结果是啥都没有[],现在将[/w]*?</div>去掉,变为<div class ="pd-dload" >,是不是可以匹配一部分?哈哈~那就是说后面的那个写的有问题。仔细看看你的那些字符,其中有可能有各种各样的字符例如/n、空格、:、“、’、.等。其中/s可以匹配很多诸如空格回车之类的符号,然后你再手工添加其他的符号.添加完毕后,pattern就为:<div class=/"pd-dload/">[/s/w|.:=?<>//"-{}/'()!]*?</div>,记住这里其实就是对/进行匹配。将reg = re.compile("")中的做替换试试。发现还是[].

 

现在怎么办呢?方法很简单,一步一步的尝试。首先我匹配到:

<div

 class

="pd-dload"

>
<a

pattern为<div class=/"pd-dload/">[/s/w|.:=?<>//"-{}/'()!]*?<a,然后出来结果了.继续向前找直到pipmak-0.2.7-windows.zip,这里会出现问题。我很奇怪的一点是/w可以匹配数字,为什么这里匹配不出来呢?最后想到了匹配这样串的简单方法[/d/D]*?,这样就包括了所有的情况./d是所有的数字,/d是所有的非数字。合起来就是全部的字符。最后的pattern为: <div class=/"pd-dload/">[/d/D]*?</div>

 

我想应该有更加简单的pattern才对.

如果想知道到某一个匹配的串的中的内容,可以这样写:例如

<p class="pd-www"><a href="http://www.alliancep2p.com" class="link-external">http://www.alliance3p.com</a></p>
我希望能够找到
http://www.alliance3p.com,那应该怎么匹配呢?

不过使用re.search就只能找到一行匹配的代码。对于要找到多行匹配的代码,可以使用findall(),然后再自己写代码掐头去尾好了。或者将找到的串在使用re.search进行匹配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值