9.4.2 正则表达式符号表示

regex库可以识别几种正则表达式符号表示的变体。在本书中,我使用默认的符号表示,它是ECMA标准的一个变体,ECMA标准被用于ECMAScript中(更为人们所熟知的名称是JavaScript)。

正则表达式的语法基于一些特殊含义的字符。

例如,我们可以指定一个模式是以零个或多个A开头,后接一个或多个B,最后是一个可选的C:

下面这些字符串与此模式匹配:

下面这些字符串与此模式不匹配:

模式的一个组成部分如果被括号所包围,则它构成一个子模式(可从smatch中独立抽取出来)。例如:

通过添加后缀,可以指定一个模式是可选的或是重复的(默认恰好出现一次)。

例如下面的正则表达式:

下面两个字符串与之匹配:

下面几个字符串与之不匹配:

如果在任何重复符号(?、*、+及{})之后放一个后缀,会使模式匹配器变得“懒惰”或者说“不贪心”。即,当查找一个模式时,匹配器会查找最短匹配而非最长匹配。而默认情况下,模式匹配器总是查找最长匹配,这就是所谓的最长匹配法则(Max ...

Get C++语言导学(原书第2版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.