正则入门:边界的定义与相对性

究竟什么才算边界?
服务器君一共花费了341.631 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

讲了这么多,还漏掉了一个重要的内容:究竟什么才算边界?

通常情况下,以 空格、段落首行、段落末尾、逗号、句号 等符号作为边界,值得注意的是,分隔符“-”也可以作为边界。

正则如下:

\bmagic\b

效果演示

welcome to nowa-magic this magic place!

本例代码

function reg_replace()
{
	var test = document.getElementById("test");
	var regex = /\b(magic)\b/g;
	test.innerHTML = test.innerHTML.replace(regex,"<span style='background-color:orange'>$1</span>");
}

这是什么原因呢?其实很好理解,从“-”的字面意思:分隔符,大致就可以想到了。实际上,在英语中,它是用来做单词分隔的。

这里有个重要的搜索引擎优化常识,大家注意到本文档的命名,我采用的是:Regular-Expression-Tutorial.pdf,为什么不用下划线分隔,命名成Regular_Expression_Tutorial.pdf 呢? 因为当搜索引擎看到“-”的时候,会把它视为一个空格“ ”,而看到下划线“_”的时候,会把它视为空字符“”,实际上,下划线的正确叫法是“连字符”。于是,当我命名为 Regular-Expression-Tutorial.pdf 时,搜索引擎看到的是: Regular Expression Tutorial.pdf,而当我命名成 Regular_Expression_Tutorial.pdf 时,搜索引擎看作 RegularExpressionTutorial.pdf 。

可以看出,正则表达式在字符边界问题上 对“-”的处理方式 与 搜索引擎相同。

边界的相对性:

  • 当你对一个普通字符,比如“s”,设定边界的时候,它的边界是诸如空格、分隔符、逗号、句号等。
  • 当你对一个边界,比如分隔符“-”或者“,”等,设定边界的时候,它的边界是普通字符。

正则如下:

\b(,)\b

效果演示

welcome to nowamagic,this magic place!

与上面唯一不同的是:这次我们匹配逗号“,”,而它本身也是一个边界,结果与上面完全相反。可见,对于“,”而言,它的边界是一个普通字母。

边界的相对性是很重要的,因为我们很多时候需要匹配诸如“<”这样的字符。

延伸阅读

此文章所在专题列表如下:

  1. 什么是正则表达式?
  2. 正则入门:匹配固定的单个字符
  3. 正则入门:匹配任意的单个字符
  4. 正则入门:字符组的使用
  5. 正则入门:在字符组中使用字符区间
  6. 正则入门:反义字符组的使用
  7. 正则入门:匹配空字符
  8. 正则入门:匹配一个或多个字符
  9. 正则入门:匹配零个或多个字符
  10. 正则入门:匹配零个或一个字符串
  11. 正则入门:匹配固定数目的字符
  12. 正则入门:匹配区间内数目的字符
  13. 正则入门:贪婪匹配
  14. 正则入门:惰性匹配
  15. 正则入门:两个匹配模式
  16. 正则入门:匹配单词边界
  17. 正则入门:边界的定义与相对性
  18. 正则入门:匹配非单词边界
  19. 正则入门:匹配文本首和尾
  20. 正则入门:子模式
  21. 正则入门:“或”匹配
  22. 正则入门:后向引用文本替换
  23. 正则入门:非获取匹配
  24. 正则总结:JavaScript中的正则表达式
  25. 正则总结:正则表达式在js中的高级应用

本文地址:http://www.nowamagic.net/librarys/veda/detail/1071,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1071

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《深入理解计算机系统(原书第2版)》 布莱恩特(Randal E.Bryant) (作者), 奥哈拉伦(David R.O'Hallaron) (作者), 龚奕利 (译者), 雷迎春 (译者)

《深入理解计算机系统》从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、网络编程、并发编程等。书中提供子大量的例子和练习题,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。

更多计算机宝库...