您的位置:首页 > 其它

一个神奇高效的工具-正则表达式(五)

2017-06-30 22:45 260 查看

回顾上一篇

一个神奇高效的工具-正则表达式(四)

位置匹配

前面几节,我们主要介绍了使用各种各样的元字符使我们的模式能够满足重复匹配,至此,你可以解决很多问题了。下面通过一个场景来引出本节的主旨

The cat scattered his food all over the room.


我们需要找出所有“猫”的单词-cat:

模式:cat


是的,那只猫被我们找到了,可是它所做的事儿,也被我们”找到”了 – s**cat**tered

如何确保模式能够满足我们的需求,又不能找到我们不想要的结果,这往往是需要多加揣摩的

是的,我们虽然直接的用cat作为了我们的模式,但是cat毕竟可能出现在文本的任意地方,我们没有对他的位置进行任何的限定,这自然会”一网打尽”。

本节,我们主要介绍如何结合位置的一些小技巧,让我们的模式更加的健壮。

边界匹配-单词边界

还是上面的场景,如果我们可以增加一个限定,找寻一个单词,单词的文本为”cat”,那就搞定啦。

在正则表达式中一个完整的单词,他的前后需要加上限定符’\b’

模式:\bcat\b


使用单词边界的限定符来组成我们的模式,那么,这只坏坏的猫,终于被我们”抓到”了。

当然,\bcat表示cat开头的单词,cat\b表示以cat结尾的单词,如前面提到的,\B就代表不是单词的边界,可用来找寻多余的空格

边界匹配-字符串边界

单词边界可以用来进行有关单词位置相关的匹配,字符串边界也有着类似的用途。开门见山:

字符串开头用’^’,字符串结尾用’$’。’^’这个元字符我们已经介绍过了,当时的含义是取非,不过,这必须当它在”[]”内并且紧挨着左边的方括号时,它才有取非的作用,在本节,他发挥着字符串开头限定的作用。

<url>
<loc>http://codingsj.com/2017/06/16/pc-no-network-rc/</loc>
<lastmod>2017-06-30T11:45:49.112Z</lastmod>
</url>
<url>
<loc>http://codingsj.com/2017/06/16/pc-no-network-dnsmasq/</loc>
<lastmod>2017-06-30T11:45:16.180Z</lastmod>
</url>


匹配标签loc内的内容

模式:^<loc>.*</loc>


‘^’代表从行首开始匹配的字符串,看似正确的模式,读者是否能看出存在什么问题?

可以在编辑器中尝试着匹配一下,尝试着用上一节介绍的内容解决这个问题吧,do it!

思考一下,^.*$什么情况下得不到匹配

总结

本节内容比较简单,量也不较少,但是要注意实践,很多问题都是在调试的时候出现的

这是我的博客,欢迎拍砖:http://codingsj.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则表达式 回顾