当你自我炫耀时,便会受到谄媚者的青睐

发掘积累过程的快感

首页 » BIBLE模型 » 编程基础 » 第六节:正则表达式元字符(四)

第六节:正则表达式元字符(四)


最后一节关于正则表达式元字符的相关介绍,通过这几篇正则表达式元字符的学习,对正则表达式的认识应该有一个提升。以后在学习或者写正则表达式的时候 要注意是否达到效率最高了。这一大章节的学习,其中某些正则表达式定义并不适用你当前所用的工具中,但是在了解了这些定义后,你能学习到正则表达式还能这样玩, 也是很有趣的。

正则表达式——括号以及反向应用

到目前为止,我们所见过的括号有两种用途:

  1. 限制多选项的范围
  2. 将若干字符组合为一个单元,受问好或星号或加号之类的量词的作用。

现在我要介绍的另一种用途,虽然支持这一功能的 egrep 并不多,但在其他工具软件中很常见。

在许多流派的正则表达式中,括号能够"记住"它们包含子表达式匹配的文本。如果我们知道重复单词的第一个单词,就能无误的找到它。例如 /the the/,这样或许 还是会匹配到"the theory"的情况,但是我们使用单词分界符:/\>the the\</,这样就解决了这个问题。

穷举所有出现的重复单词显然是不可能完成的任务,如果先匹配任意一个单词,接下来检查"后面的单词是否与它一样",这样就方便多了。如果你当前使用的正则表达式支持 " 反向引用 ",就能这样。

反向引用是正则表达式的特性之一,它容匹配与表达式先前部分匹配同样的样本。

接下来,继续改造之前的那个正则表达式。先把 /\<the\s+the\>/ 中第一个"the"替换为能够匹配任意单词的正则表达式 /[A-Za-z]+/; 然后在两端加上括号;最后把后一个"the"替换为特殊的元字符序列 /\1/,就得到了 /\<([A-Za-z]+)\s+\1\>/
在支持反向引用的工具软件中,括号能够记忆其中子表达式匹配的文本,无论这些文本是什么,元字符序列 /\1/ 都能记住。

当然在一个表达式中,我们可以使用多个括号,在使用 /\1 \2 \3/ 来表示第一组】第二组、第三组匹配的文本。

正则表达式——转义

在之前涉及到的例子中,我们避开了一个话题,如果需要匹配的某个字符就是元字符,正则表达式该如何处理呢?

比如我需要匹配一个互联网域名"www.helay.net",其中的点号就是元字符,它可以匹配任何字符。正则匹配文本中点号的元序列应该是反斜线加上点号的组合: /www\.helay\.net//\./ 称之为" 转义的点号 ",这种办法适用于所有元字符,不过在字符组内部无效。 (注意某些版本的程序语言有特殊的)

这样是使用反斜线称为" 转义符 ",作用就是去除元字符的特殊含义。

互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼。 “Bible”是圣经,有权威的书,我们的本意就是为开发者提供真正有用的的资料。 我的电子邮件 1217179982@qq.com,您在开发过程中遇到任何问题,欢迎与我联系。
Copyright © 2024. All rights reserved. 本站由 Helay 纯手工打造. 蜀ICP备15017444号