1
boost::regex re("(abc)(.*?)");
boost::smatch m;
std::string str = "abcdlogin";
boost::regex_search(str, m, re);

m[1].first は「abcdlogin」、m[1].second は「dlogin」であることがわかりました。

しかし、m[1].firstは「abc」であるべきだと思いますか?

4

1 に答える 1

1

ドキュメントに記載されているように:

m[n].first : すべての整数 n < m.size() の場合、サブ式 n に一致するシーケンスの開始。あるいは、サブ式 n が一致に参加しなかった場合は、最後になります。

m[n].second : すべての整数 n < m.size() の場合、部分式 n に一致したシーケンスの末尾。あるいは、サブ式 n が一致に参加しなかった場合は、最後になります。

それらが一致するサブ式への反復子であることに注意してください。あなたの例では、 の文字列が必要な場合は"abc"、次のような文字列を作成できますstd::string s(m[1].first, m[1].second);

于 2012-12-10T03:12:05.420 に答える