我想在 aregex
的反面使用 a string
。
我可以执行以下操作,但我所有的sub_match
es 都颠倒了:
string foo("lorem ipsum");
match_results<string::reverse_iterator> sm;
if (regex_match(foo.rbegin(), foo.rend(), sm, regex("(\\w+)\\s+(\\w+)"))) {
cout << sm[1] << ' ' << sm[2] << endl;
}
else {
cout << "bad\n";
}
[现场示例]
我想要的是出去:
同义词
是否有任何规定可以得到不被逆转的子比赛?也就是说,除了string
在它们匹配后反转 s 之外的任何规定:
string first(sm[1]);
string second(sm[2]);
reverse(first.begin(), first.end());
reverse(second.begin(), second.end());
cout << first << ' ' << second << endl;
编辑:
有人建议我更新问题以澄清我想要的内容:
regex
向后运行并不是string
要颠倒找到匹配项的顺序。它要复杂得多,在这里发布很有价值,但是向后运行它可以让我不需要向前看。这个问题是关于处理从. 我需要能够将它们从输入中取出,在这里。我不想为每个子比赛构建一个临时的并在其上运行。我怎样才能避免这样做。regex
match_results<string::reverse_iterator>
foo
string
reverse