/* * * Copyright (c) 1998-2009 * John Maddock * * Use, modification and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * */ /* * LOCATION: see http://www.boost.org for most recent version. * FILE regex_format.hpp * VERSION see * DESCRIPTION: Provides formatting output routines for search and replace * operations. Note this is an internal header file included * by regex.hpp, do not include on its own. */ #ifndef BOOST_REGEX_V5_REGEX_REPLACE_HPP #define BOOST_REGEX_V5_REGEX_REPLACE_HPP namespace boost{ template OutputIterator regex_replace(OutputIterator out, BidirectionalIterator first, BidirectionalIterator last, const basic_regex& e, Formatter fmt, match_flag_type flags = match_default) { regex_iterator i(first, last, e, flags); regex_iterator j; if(i == j) { if(!(flags & regex_constants::format_no_copy)) out = BOOST_REGEX_DETAIL_NS::copy(first, last, out); } else { BidirectionalIterator last_m(first); while(i != j) { if(!(flags & regex_constants::format_no_copy)) out = BOOST_REGEX_DETAIL_NS::copy(i->prefix().first, i->prefix().second, out); out = i->format(out, fmt, flags, e); last_m = (*i)[0].second; if(flags & regex_constants::format_first_only) break; ++i; } if(!(flags & regex_constants::format_no_copy)) out = BOOST_REGEX_DETAIL_NS::copy(last_m, last, out); } return out; } template std::basic_string regex_replace(const std::basic_string& s, const basic_regex& e, Formatter fmt, match_flag_type flags = match_default) { std::basic_string result; BOOST_REGEX_DETAIL_NS::string_out_iterator > i(result); regex_replace(i, s.begin(), s.end(), e, fmt, flags); return result; } } // namespace boost #endif // BOOST_REGEX_V5_REGEX_REPLACE_HPP