- using namespace boost;
- static const auto kPre = regex(R"(\A[ \t]*\n)");
- static const auto kPost = regex(R"([ \t]+\z)");
- static const auto kScan = regex(R"(^[ \t]*(?=\S))");
- s = regex_replace(s, kPre, "");
- s = regex_replace(s, kPost, "");
+ std::vector<StringPiece> pieces;
+ split("\n", s, pieces);
+ auto piecer = range(pieces);
+
+ auto piece = (piecer.end() - 1);
+ auto needle = std::find_if(piece->begin(),
+ piece->end(),
+ [](char c) { return c != ' ' && c != '\t'; });
+ if (needle == piece->end()) {
+ (piecer.end() - 1)->clear();
+ }
+ piece = piecer.begin();
+ needle = std::find_if(piece->begin(),
+ piece->end(),
+ [](char c) { return c != ' ' && c != '\t'; });
+ if (needle == piece->end()) {
+ piecer.erase(piecer.begin(), piecer.begin() + 1);
+ }
+