Skip to content

Latest commit

 

History

History
56 lines (37 loc) · 4.11 KB

001-目录.md

File metadata and controls

56 lines (37 loc) · 4.11 KB

我将向你介绍正则表达式的方方面面。下面每一章节的内容都是建立在之前章节之上的,所以你需要按序阅读下面的章节。

这一章将介绍本教程的内容范围,以及正则的一些名词解释。

最基础的正则表达式是由字面量字符组成的。有些字符具有特殊的含义,在使用的时候需要转义,我们称它们为元字符。而元字符是正则中较为复杂的部分。

非打印字符是诸如换行符、回车符、制表符等。

在这一章中我们将首次讲解正则引擎的内部工作,之后的章节是建立在这一章的基础之上的。理解正则表达式的内部原理将帮助我们构造更复杂、更准确的表达式。

一个字符集可以匹配一个集合中出现的任何一个字符,字符集可以包含单个字符和范围。 字符集取反则可以匹配任何没有出现在字符集中的字符。

字符集缩写是一种使用常用字符集的快捷方式,它既可以单独使用,也可以在字符集中使用。

.可以匹配除了行终结符以外的任何字符,在许多引擎中你可以通过配置使得.可以匹配的行终结符。

位置字符是一种零宽断言(匹配的字符长度为零)。位置字符不匹配任何字符,它匹配的是位置。有的位置字符可以匹配一个字符串的开始和结尾,有的可以匹配每一行的开始和结尾。

词语边界和位置字符很接近,但是它匹配词语的开始和结束

你可以使用|将多个子表达式分隔开,以此来告诉引擎从左至右依次匹配每一个子表达式。一旦发现成功的匹配立即返回。

你可以在匹配项的后面加上一个问号,以告诉引擎这个匹配项不是必须的。也就是说这个匹配项匹配失败不会导致引擎发生回溯,引擎会继续向前搜索。

正则中有三种形式的量词,他们分别是星号*、加号+、花括号{},他们可以指定正则中的项目重复零次或者多次、一次以上、任意指定次数。最重要的一点是:这些量词默认都是贪婪的,除非你指定使用非贪婪模式。

我们可以把表达式中的一部分写入一对圆括号中,引擎会把圆括号中的内容作为一个整体(例如使用量词或是选择符的时候)。圆括号也可以创建捕获组,是的引擎可以复用匹配的字符串。

捕获组中保存的匹配结果在回溯引用中再次被匹配,也就是说它使得我们可以匹配重复出现的字符串。

如果一个表达式中存在多个组,那么使用具名组可以使得表达式更容易阅读。

使用预测或者回顾断言是一种零宽断言,它可以匹配一个位置。你可以指定这个位置之后出现指定字符串,也可以指定改位置之后不出现指定字符串。类似的,你可以指定这个位置之前出现指定字符串,也可以指定改位置之前不出现指定字符串。由于这个匹配是零宽的,所以它所匹配的结果不会计入正则表达式的匹配结果。你可以对同一个字符串同时使用预测断言和回顾断言。


如果文章出现错误,请给我提Issues - - Github地址

原文