37.1 正则表达式

在<regex>中,标准库提供了对正则表达式的支持:

·regex_match():匹配正则表达式和(已知长度的)字符串。

·regex_search():在一个(任意长的)数据流中搜索匹配正则表达式的字符串。

·regex_replace():在一个(任意长的)数据流中搜索匹配正则表达式的字符串并替换它们。

·regex_iterator:用来遍历匹配结果和子匹配的迭代器。

·regex_token_iterator:用来遍历未匹配部分的迭代器。

regex_search()的集合是一组匹配集合,通常表示为一个smatch:

这个函数读取一个文件,从中查找美国邮政编码,例如TX77845和DC 20500-0001。smatch类型就是保存正则表达式匹配结果的容器。在本例中,matches[0]保存完整的匹配结果,matches[1]保存可选的四数字子模式。在本例中我使用了裸字符串字面常量(见7.3.2.1节),它特别适合正则表达式,因为正则表达式中会包含大量反斜线。假如我使用普通字符串字面常量,模式定义就必须写成:

正则表达式语法和语义的设计目标是令正则表达式能编译为状态机并高效执行[Cox,2007]。类型regex在运行时完成这种编译。

37.1.1 正则表达式符号表示 ...

Get C++程序设计语言(第4部分:标准库)(原书第4版) 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.