如何使用正则表达式提取文本中的所有名称

时间:2011-08-13 04:22:18

标签: c++ regex

英文名字就像哈利波特的格式,一个名字是另一个姓氏。但是如何使用C ++提取这种模式呢?

2 个答案:

答案 0 :(得分:1)

嗯,一个非常简单的正则表达式是/\b([A-Z][a-z]+) ([A-Z][a-z]+)\b/

编辑:这不会处理奇数大写和流浪撇号。

编辑:删除了^$,放置了字边界。

答案 1 :(得分:0)

你可以从这样的事情开始。

#include<regex>
#include<iostream>
int main()
{
   // regular expression
   const std::regex pattern("([A-Z][a-z]+)\s([A-Z][a-z]+)");

   // the source text
   std::string text = "string containing names ...";

   const std::sregex_token_iterator end;
   for (std::sregex_token_iterator i(text.cbegin(), text.cend(), pattern);
        i != end;
        ++i)
   {
      std::cout << *i << std::endl;
   }

   return 0;
}

学习正则表达式有帮助。