打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
给我一些元字符,我能表达整个地球


莫名想起一个笑话:阿基米德:给我一个杠杆,我能撬动地球。 金融人:喏,这个三倍杠杆借给你。 第二天开盘,阿基米德净亏两个地球。


上一次我们说到,简单点来讲,正则的使用可以包括两部分:

  • 构建Pattern

  • 处理返回的匹配

今天我们就来看一下如何构建不同的Pattern来表达我们所想要表达的内容。

元字符

就像盖房子需要砖瓦一样,我们想要构建不同的Pattern,也需要一些基础单元。这些基础单元用专业术语来讲,就是元字符。

就像是自然语言里会有单词,数字,量词一样,元字符也是分很多种。最常见的是:

\d: 匹配一个数字字符。等价于 [0-9][a-z]: 匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。[\u4e00-\u9fa5]:匹配中文\w: 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。. :匹配除换行符以外的任意字符

上面这些元字符是用来表达单个字符的,如果要表达个数,可以使用下面的:

* : 匹配前面的子表达式零次或多次。例如,zo* 能匹配 'z' 以及 'zoo' : 匹配前面的子表达式一次或多次。例如,'zo ' 能匹配 'zo' 以及 'zoo',但不能匹配 'z'。? : 匹配前面的子表达式零次或一次。例如,'do(es)?' 可以匹配 'do' 或 'does' 。 {n}: n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 'Bob' 中的 'o',但是能匹配 'food' 中的两个 o。  {n,m}: m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,'o{1,3}' 将匹配 'fooooood' 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

把单个字符和数量的表达方式结合起来,我们就可以构建一些简单的pattern了。

例如:

如果要匹配2017-02-03这种日期方式,就可以用:

\d{4}-\d{1,2}-\d{1,2}

学爬虫的时候看到有不少人喜欢到网上抓图,如果要识别<img>标签,可以大概使用下面这个pattern:

<img src='. '.*>

当然,上面这个pattern随着具体情况还有待深究,我们也会提及。

在这里要注意的是,正则只是按照你给定的pattern进行匹配,而不会检测所匹配出的字符是否符合现实意义。举个例子,2017-13-15可以匹配\d{4}-\d{1,2}-\d{1,2},然而大家都知道这个日期肯定是不对的。

总结一下

  • 基本元字符


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
三+五℃--正则表达式(regular?expression)
最常用的PHP正则表达式收集整理
精通正则表达式,看完这篇就行了
Php
正则表达式
正则表达式重要识记内容
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服