我有以下字符串,我只想从中提取大于 1 的字母部分(字母子字符串):
- % dipp 参加 --> 参加
- aprè s. 专业知识 --> 四月,专业知识
- ncpc condamner --> condamner
我正在尝试以下代码:
#include <regex>
#include <iostream>
void main()
{
const std::string s = "% d. i.p.p. attendu";
std::regex rgx("[a-zA-Z]{2,20}");
std::smatch match;
if (std::regex_search(s.begin(), s.end(), match, rgx))
std::cout << "match: " << match[1] << '\n';
}
但是当我运行代码时出现以下错误: 在抛出'std :: regex_error'what()的实例后调用终止:regex_error
你能帮我吗,谢谢你,哈尼。
好的,我设法使用了 boost,因为 gcc 的正则表达式是可憎的。
#include <boost/regex.hpp>
void main()
{
const std::string s = "% d. i.p.p. tototo attendu";
boost::regex re("[a-zA-Z]{4,7}");
boost::smatch matches;
if( boost::regex_search( s, matches, re ) )
{
std::string value( matches[0].first, matches[0].second );
cout << value << " ";
}
}
很好,我找到了attendu,但输出只是tototo。它没有增加
返回值是“tototo Attendu”我想知道我是否可以一次返回每个值而不是 1 个字符串