August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
使用模式的最简单的方式是在流中搜索它:
regex_search(line,matches,pat)在line中搜索任何与正则表达式pat匹配的子串,如果找到匹配子串,就将其保存在matches中。如果未找到任何匹配,regex_search(line,matches,pat)返回false。变量matches的类型是smatch。开头的“s”表示“子”或“字符串”的意思,一个smatch实质上是一个string的vector,每个string保存的是一个子匹配。首元素matches[0]对应整个匹配。regex_search()的结果是一批匹配,通常表示为一个smatch对象。
此函数读取一个文件,在其中查找美国邮政编码,如TX 77845和DC 20500-0001。smatch类型是一个保存regex匹配结果的容器。在本例中matches[0]对应整个模式而matches[1]对应可选的四个数字的子模式。
换行符\n可以是模式的一部分,因此可以搜索多行模式。显然,如果希望做这样的搜索,就不应一次读取一行。
正则表达式的语法和语义的设计目标是,使之能编译成可高效运行的自动机[Cox,2007],这个编译过程是由regex类型在运行时完成的。
Read now
Unlock full access