在Perl中,我可以这样做:
使用C++正则表达式匹配,最好的方法是什么,以便我可以获得包括所有匹配项在内的匹配集合?
目前我的代码如下:
然而,这只会给我第一个匹配项,就像没有/g选项的Perl一样,这很好,但我想要/g效果。那么,有没有好的方法来做到这一点,还是必须一遍又一遍地运行正则表达式?
$text = '1747239';
@matches = ($text =~ m/(\d)/g);
# @matches now contains ('1', '7', '4', '7', '2', '3', '9')
使用C++正则表达式匹配,最好的方法是什么,以便我可以获得包括所有匹配项在内的匹配集合?
目前我的代码如下:
compiledRegex = std::regex(regex, std::tr1::regex_constants::extended);
regex_search(text, results, compiledRegex);
int count = results.size();
// Alloc pointer array based on count * sizeof(mystruct).
for ( std::cmatch::iterator match = results.begin();
match != results.end();
++match )
{
// Do something with match;
}
然而,这只会给我第一个匹配项,就像没有/g选项的Perl一样,这很好,但我想要/g效果。那么,有没有好的方法来做到这一点,还是必须一遍又一遍地运行正则表达式?
results[0].second
。我已经相应地更新了我的答案。 - Eugene