常用正则表达式分析

      经常遇到有朋友问与正则表达式有关的问题 ,网上关于常见表达式的的例子很多,但有针对性的分析较少.因此便萌发了收集常见的表达式,并加以分析的想法.(持续维护)

匹配mp3地址

http:///S+?.mp3
http://  匹配串必须以http://开头
/S+?     不包空字符的长度不为零的字符串,这里用?表示非贪婪匹配,这样/S+?就不会匹配到后面的.mp3
.mp3     匹配串必须以.mp3结尾

匹配HTML标记

<(/S*?)[^>]*>.*?<//1>|<.*?/>

对于输入字符串<font>abc</font><font>123</font><img/>
生成三个匹配项
<font>abc</font>
------- 下一个匹配项 ----------
<font>123</font>
------- 下一个匹配项 ----------
<img/>
下面来分析它之所以能工作的原理
< 匹配串必须以字符<开头
(/S*?) 用括号括起来表示一个子表达式分组,对这个例子来说此分组的匹配结果是font,采用分组的目的是保存分组的采集结果供后面的匹配使用(马上就可以看到)
/S*  /S表示与非空的字符匹配,*是限定符表示0到多次匹配,合起来/S*就表示与中间不包含非空字符的字符串匹配。
?    ?跟在限定符(这个例子中是*)后边表示非贪婪匹配,只匹配符合条件的最小子串
[^>]*  [^...]结构表示匹配跟在 ^ 之后的不在字符集中的任何字符。这个例子中就是除>外的任意字符,*限定符表示可以匹配0到多次这样的字符。
> 匹配>字符。到这里就完成本例中对<font>的匹配
.*?  匹配不包含换行的符的字符串,?表示只匹配符合条件的最小子串。
</   和字符</匹配
/1   转义符/后跟分组序号表示引用此分组的匹配内容,第一个用小括号括起来的捕获匹配的序号是1,因此在这个例中/1表示分组(/S*?)的匹配结果,即font。
>    匹配字符>。
|    匹配前面或后面的表示式,此例中表示匹配<...></...>或<../>两种类型的字符串
<.*?>  匹配型如<../>的字符串。
提示:如果对贪婪匹配和非贪婪匹配不理解,可以用非贪婪表达式<.*?>和贪婪表达式(默认行为)<.*>分别匹配<img/><img/>,看匹配结果就明白了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值