加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

正则表达式基础(1)

发布时间:2021-05-21 08:15:56 所属栏目:大数据 来源: https://www.jb51.cc
导读:目录 一、基础字符匹配 二、常用元字符及功能 三、 重复 匹配 1.限定精确次数或限制区间 2.防止过度匹配 四、常见问题的正则表达式解决方法 一、基础字符匹配 1.空白元字符? ? ? ? ? ? ? ? ? 元字符说明[ b ]Backspace键f换页符n回车符r换行符tTab键v
元字符 说明 [ b ] Backspace键 f 换页符 n 回车符 r 换行符 t Tab键 v 垂直制表符

?

?

?

?

?

?

?

?

?

b表示两个字符时,是匹配单词边界,之前遇到过要匹配单词,需要 r'b加以说明.

回车和换行符感觉功能是一样的,查看一些资料表示有一些解释器会将 r?自动转换为 n,?正则表达式rn匹配一个“回车换行”组合,windows系统把这个组合用作文本结束标签,Unix和Linux只使用一个换行符结束一个文本行,匹配时候用nn即可,不应加上r.

?  2.特定字符匹配

元字符 说明 d 任何一个数字字符(等价于[0-9]) D 任何一个非数字字符(等价于[^0-9]) w 任何一个字母字符或下划线字符(即[a-zA-Z0-9_]) W 任何一个非字母字符或非下划线字符(即[^a-zA-Z0-9_]) s 任何一个空白字符 S 任何一个非空白字符

?

?

?

?

?

?

?

?

?

字母的大小写匹配相反的字符.

  3.匹配十六进制和八进制数值

在正则表达式中,十六进制数值要用前缀x,如x0A对应ASCII字符10(换行符),效果等于n,八进制前缀则是,如11对应ASCII 9(制表符)

二、常用元字符及功能

  1. 字符常用于转义,如上面列举的字符匹配,当文本需要匹配本身时,用

  2. .字符可以匹配任何单个字符、字母、数字,甚至本身

  3. +字符匹配一个或多个字符,放在一个字符或字符集之后,匹配与前面意义相同的字符

  4. *字符匹配0个或多个字符,用法类似'+',只是匹配的前面字符可以不出现

  5. ?字符匹配他前面的字符是否存在,如匹配URL时,有http和https,正则表达式https?

  6. @、-字符用时无须转义

三、重复匹配

  1.限定精确次数或限制区间

  有了上面的字符功能的介绍,重复匹配我们可以用+或*,但是有局限性,不能限制重复次数,所以要给它设定精确的次数,这时用到{},比如要找出网页中RGB值,文本是:

<body bgcolor = "#336655" text = "#FFFFFF">
View Code、

正则表达式:#[0-9a-fA-F]{6}  结果:#336655  #FFFFFF

例子重复匹配为6次,那如果要检查日期的书写格式如:2005/01/01、2006-1-10、19.08.15、18 8 8,最后一个不符合要求,年份至少要两位数,这就需要设定最少和最多重复次数,

正则表达式为:d{2,4}[/-.]d{1,2}[/-.]d{1,2}   结果最后一个不符合就没有匹配到,检查完成。

  2.防止过度匹配

  虽然我们已经能够限定匹配重复次数,但是还有一种情况,一个网页里面的各种标签不止出现一次,例如要找出<a></a>里面的内容:文本:

a>网页</><>新闻>贴吧>知道>音乐>图片>视频>地图>文库>
View Code

正则表达式:<a>.*</a>  匹配结果是整一串,<a>网页</a><a>新闻</a><a>贴吧</a><a>知道</a><a>音乐</a><a>图片</a><a>视频</a><a>地图</a><a>文库</a>,而我们理想是每个标签都会分开

修改为:<a>.*?</a>   结果显示9个匹配:<a>网页</a>、<a>新闻</a>、<a>贴吧</a>、<a>知道</a>、<a>音乐</a>、<a>图片</a>、<a>视频</a>、<a>地图</a>、<a>文库</a>

  +、*都是“贪婪型”元字符,在匹配行为模式上是多多益善而不是适可而止,所以它的“懒惰性”版本则尽可能短的匹配,式子后加上?

四、常见问题的正则表达式解决方法

  1.URL地址

a href="https://www.baidu.com/" nslog="normal" nslog-type="10600112" data-href="https://www.baidu.com/s?ie=utf-8&fr=bks0000&wd=">
="http://news.baidu.com/"="http://news.baidu.com/ns?tn=news&cl=2&rn=20&ct=1&fr=bks0000&ie=utf-8&word="="https://tieba.baidu.com/"="https://tieba.baidu.com/f?ie=utf-8&fr=bks0000&kw="="https://zhidao.baidu.com/"="https://zhidao.baidu.com/search?pn=0&&rn=10&lm=0&fr=bks0000&word="="http://music.baidu.com/"="http://music.baidu.com/search?f=ms&ct=134217728&ie=utf-8&rn=&lm=-1&pn=30&fr=bks0000&key="="http://image.baidu.com/"="http://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word="="http://v.baidu.com/"="https://www.baidu.com/sf/vsearch?pd=video&tn=vsearch&ie=utf-8&rsv_spt=17&wd="="http://map.baidu.com/"="http://map.baidu.com/m?ie=utf-8&fr=bks0000&word="="https://wenku.baidu.com/"="https://wenku.baidu.com/search?lm=0&od=0&ie=utf-8&fr=bks0000&word=">
View Code

正则表达式:https?://[w.]+.com

  2.电子邮件地址

My QQ mail is 12345@qq.com,and another mail is abcde@126.com
View Code

正则表达式:(w+)*@w+.com

?  在实际运用正则表达式中,很多需要根据文本特点写出最合适简单的式子,比如爬取网页的目标信息,一个好的正则表达式能帮我们简单地解决问题。

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

目录

一、基础字符匹配

二、常用元字符及功能

三、重复匹配

  1.限定精确次数或限制区间

  2.防止过度匹配

四、常见问题的正则表达式解决方法

一、基础字符匹配

  1.空白元字符? ? ? ? ? ? ? ? ?

    推荐文章
      热点阅读