1a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant//===----------------------------------------------------------------------===// 2a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// 3a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// The LLVM Compiler Infrastructure 4a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// 8a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant//===----------------------------------------------------------------------===// 9a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant 10a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// <regex> 11a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant 12a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// template <class traits, class charT, class ST, class SA, class FST, class FSA>> 13a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// basic_string<charT, ST, SA> 14a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// regex_replace(const basic_string<charT, ST, SA>& s, 15a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// const basic_regex<charT, traits>& e, 16a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// const basic_string<charT, FST, FSA>& fmt, 17a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// regex_constants::match_flag_type flags = 18a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant// regex_constants::match_default); 19a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant 20a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant#include <regex> 21a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant#include <cassert> 22ee226c05af9e0187098f43fb71465a581487af9bDan Austin#include "test_macros.h" 23a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant 24a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnantint main() 25a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant{ 26a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant { 27a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex phone_numbers("\\d{3}-\\d{4}"); 28a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string phone_book("555-1234, 555-2345, 555-3456"); 29a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string r = std::regex_replace(phone_book, phone_numbers, 30a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string("123-$&")); 31a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant assert(r == "123-555-1234, 123-555-2345, 123-555-3456"); 32a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant } 33a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant { 34a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex phone_numbers("\\d{3}-\\d{4}"); 35a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string phone_book("555-1234, 555-2345, 555-3456"); 36a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string r = std::regex_replace(phone_book, phone_numbers, 37a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string("123-$&"), 38a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex_constants::format_sed); 39a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant assert(r == "123-$555-1234, 123-$555-2345, 123-$555-3456"); 40a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant } 41a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant { 42a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex phone_numbers("\\d{3}-\\d{4}"); 43a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string phone_book("555-1234, 555-2345, 555-3456"); 44a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string r = std::regex_replace(phone_book, phone_numbers, 45a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string("123-&"), 46a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex_constants::format_sed); 47a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant assert(r == "123-555-1234, 123-555-2345, 123-555-3456"); 48a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant } 49a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant { 50a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex phone_numbers("\\d{3}-\\d{4}"); 51a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string phone_book("555-1234, 555-2345, 555-3456"); 52a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string r = std::regex_replace(phone_book, phone_numbers, 53a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string("123-$&"), 54a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex_constants::format_no_copy); 55a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant assert(r == "123-555-1234123-555-2345123-555-3456"); 56a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant } 57a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant { 58a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex phone_numbers("\\d{3}-\\d{4}"); 59a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string phone_book("555-1234, 555-2345, 555-3456"); 60a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string r = std::regex_replace(phone_book, phone_numbers, 61a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string("123-$&"), 62a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex_constants::format_first_only); 63a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant assert(r == "123-555-1234, 555-2345, 555-3456"); 64a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant } 65a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant { 66a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex phone_numbers("\\d{3}-\\d{4}"); 67a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string phone_book("555-1234, 555-2345, 555-3456"); 68a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string r = std::regex_replace(phone_book, phone_numbers, 69a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::string("123-$&"), 70a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex_constants::format_first_only | 71a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant std::regex_constants::format_no_copy); 72a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant assert(r == "123-555-1234"); 73a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant } 74a8d775970841ca062fcd44fb16f7b164ce4f3aaeHoward Hinnant} 75