23.9 使用正则表达式进行模式匹配

正则表达式有两种主要用途:

·搜索:在(任意长的)数据流中搜索与正则式匹配的字符串——regex_search()就实现此功能,它在数据流中搜索与正则式匹配的子串。

·匹配:判断一个字符串(已知长度)是否与模式匹配——regex_match()检查模式和给定字符串是否完全匹配。

23.6节中给出的搜索邮政编码的程序是正则式搜索功能的很好示例。下面,我们介绍一个匹配操作的例子。例如,我们需要从下表这样的结构中提取数据:

这个表记录的是Bjarne Stroustrup的母校在2007年的学生数,它实际上是从互联网上提取出来的,其原始格式看起来很整洁,而且正是我们进行数据分析时常见的那种典型格式:

·它包含数值域。

·它包含字符域,其中字符串只有了解上下文的人才知道其含义。(在本例中,这种情况更为明显,因为文字都是丹麦文。)

·字符串中包含空格。

·数据“域”用“分隔符”分开,在本例中,分隔符为制表符。

我们选择的这个例子“相当典型”而且“不是很困难”,但有一点比较微妙:人眼是无法看出空格和制表符之间的区别的,这只能在程序中进行区分。

我们将展示正则表达式的如下用途:

·验证表格布局是否正确(即,是否每行包含的域的数目都正确)。

·验证合计值是否正确(每列最后一行上的数值为其上所有数值之和)。 ...

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.