正则表达式4(重复匹配)

1. 匹配一个或多个字符(+)

要想匹配某个字符(或字符集合)的一次或多次重复,只要简单地在其后面加上一个+字符。+匹配至少一个字符,比如要匹配以下电子邮箱
ben@forta.com
support@forta.com
spam@forta.com
正则表达式为:\w+@\w+.\w+
说明:第一个\w+匹配@符号前的字符串,@不是元字符所以不需要转义,第二个\w+匹配紧跟@后面,点前面的字符串,\.匹配.,第三个\w+匹配点后面的字符串
在这里插入图片描述
再比如如下邮箱:
ben@forta.com
ben.forta@forta.com
support@forta.com
ben@urgent.forta.com
spam@forta.com
在这里插入图片描述
用之前的表达式就不能完全匹配,可以修改为:[\w.]+@[\w.]+.\w+
在这里插入图片描述

2. 匹配零个或多个字符 (*)

如果要匹配零个或多个字符用字符*,和+d 用法完全一样
.forta@forta.com对于电子邮箱来说,第一个点是不需要的,用+匹配就会出问题,如果不想匹配第一个点可以修改表达式为:\w+[\w.]
@[\w.]+.\w+
在这里插入图片描述
这样第一个点就不会被匹配了。

3.匹配零个或一个字符(?)

如果一个字符只允许出现0次或1次,可用符号?来匹配,对于URL地址有两类文本:http://和https://,对于如下两个网址,如果都想匹配,可用表达式: https?😕/[\w./]+
The URL is http://www.forta.com/
The URL is https://www.forta.com/
在这里插入图片描述
说明:?号前面的字符或字符集合只能出现0次或1次。

4. 匹配的重复次数

在某些情况下,我们需要匹配字符串出现的具体次数,此时可在相应表达式后面加上符号{a,b},表示匹配a到b个对应字符,比如:
\d{1,2}即匹配1或2个数字字符
\d{2,}即匹配至少2个数字字符
符号+功能上等价于{1,}

5. 防止过度匹配

在网络爬虫匹配网页内容时经常出现过度匹配的情况,比如
在这里插入图片描述
我们想分别匹配两个, 但结果全部被匹配,这是因为*和+是“贪婪型”元字符,他们会尽可能多的去匹配字符,与此对应的是“懒惰型”元字符,只要在贪婪型后面加上?即可,还是上面的例子,我们再.后面加上?,表达式为<[Bb]>.?</[Bb]>
在这里插入图片描述
具体内容参考《正则表达式必知必会》【美】本-福塔

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值