英文名字就像哈利波特的格式,一个名字是另一个姓氏。但是如何使用C ++提取这种模式呢?
答案 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;
}
学习正则表达式有帮助。