正则表达式-前后查找(六)

前面讲到的正则表达式都是如何匹配表达式所表达的意思,如[a-z]+是匹配1个以上a-z的字母。今天我们讲到的是前后查找的例子,首先我们讲到向前查找的语法:

    (?=表达式)

我们举一个例子,假设我们在如下列表中想获取协议名

http://
ftp://
https://

按照我们一般的写法是

 [a-z]+:

这样写存在一个问题,就是会匹配“:”本身。这样就不是想要的结果,如果不想要匹配冒号本身,就需要使用本章介绍的向前匹配,基本的思路使用冒号先前匹配一系列字母:

[a-z]+(?=:)

这样匹配的结果就是

http
ftp
https

这样就符合我们的要求了,既返回了我们想要的协议列表。

接下来我们讲到向后匹配,同样的我们来说语法,向后匹配的语法与向前匹配很像,只是加了一个箭头:

(?<=表达式)

假设我们要匹配一下列表中的数字:

$12.36
$25.36
$45.65

如果仅需要匹配数字,而不是“$”符号,同前面一样,我们需要使用向后匹配,按照前面的写法,写成是这样的:

    (?<=\$)[0-9.]+

最终匹配的结果就是:

12.36
25.36
45.65

如果综合运用向前和向后匹配,我们可以举一个扒网页的例子,一般html语法是这样的,如爬取到的网页标题一般是这样的:

<title> this is title</title>

那么如何获取title标签内部的值,而不匹配或消费本身呢?最终的表达式应该是如下,有兴趣可以仔细研究下这种写法

(?<=<title>).*?(?=</title>)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值