From 7c02c8cab4d068ad5b708ea926d0e767055a709d Mon Sep 17 00:00:00 2001 From: Marina Ganeva <m.ganeva@fz-juelich.de> Date: Thu, 5 Apr 2018 10:41:37 +0200 Subject: [PATCH] Refs #21293 replace std::regex with boost::regex for rhel7 --- Framework/MDAlgorithms/src/LoadDNSSCD.cpp | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Framework/MDAlgorithms/src/LoadDNSSCD.cpp b/Framework/MDAlgorithms/src/LoadDNSSCD.cpp index c3c5c5044e6..54701f46623 100644 --- a/Framework/MDAlgorithms/src/LoadDNSSCD.cpp +++ b/Framework/MDAlgorithms/src/LoadDNSSCD.cpp @@ -1,4 +1,3 @@ -#include <regex> #include <map> #include <iterator> #include <iomanip> @@ -346,9 +345,10 @@ void LoadDNSSCD::updateProperties(API::Run &run, TimeSeriesProperty<T> *timeSeries(nullptr); std::string name(it->first); std::string units; - std::regex reg("([a-zA-Z-_]+)\\[(.*)]"); - std::smatch match; - if (std::regex_search(name, match, reg) && match.size() > 2) { + // std::regex does not work for rhel7, thus boost + boost::regex reg("([-_a-zA-Z]+)\\[(.*)]"); + boost::smatch match; + if (boost::regex_search(name, match, reg) && match.size() > 2) { std::string new_name(match.str(1)); units.assign(match.str(2)); name = new_name; @@ -506,9 +506,9 @@ void LoadDNSSCD::read_data(const std::string fname, std::string line; std::string::size_type n; std::string s; - std::regex reg1("^#\\s+(\\w+):(.*)"); - std::regex reg2("^#\\s+((\\w+\\s)+)\\s+(-?\\d+(,\\d+)*(\\.\\d+(e\\d+)?)?)"); - std::smatch match; + boost::regex reg1("^#\\s+(\\w+):(.*)"); + boost::regex reg2("^#\\s+((\\w+\\s)+)\\s+(-?\\d+(,\\d+)*(\\.\\d+(e\\d+)?)?)"); + boost::smatch match; getline(file, line); n = line.find("DNS"); if (n == std::string::npos) { @@ -529,13 +529,13 @@ void LoadDNSSCD::read_data(const std::string fname, while (getline(file, line)) { n = line.find("Lambda"); if (n != std::string::npos) { - std::regex re("[\\s]+"); + boost::regex re("[\\s]+"); s = line.substr(5); - std::sregex_token_iterator it(s.begin(), s.end(), re, -1); - std::sregex_token_iterator reg_end; + boost::sregex_token_iterator it(s.begin(), s.end(), re, -1); + boost::sregex_token_iterator reg_end; getline(file, line); std::string s2 = line.substr(2); - std::sregex_token_iterator it2(s2.begin(), s2.end(), re, -1); + boost::sregex_token_iterator it2(s2.begin(), s2.end(), re, -1); for (; (it != reg_end) && (it2 != reg_end); ++it) { std::string token(it->str()); if (token.find_first_not_of(' ') == std::string::npos) { @@ -558,10 +558,10 @@ void LoadDNSSCD::read_data(const std::string fname, str_metadata.insert(std::make_pair("stop_time", parseTime(line))); getline(file, line); } - if (std::regex_search(line, match, reg1) && match.size() > 2) { + if (boost::regex_search(line, match, reg1) && match.size() > 2) { str_metadata.insert(std::make_pair(match.str(1), match.str(2))); } - if (std::regex_search(line, match, reg2) && match.size() > 2) { + if (boost::regex_search(line, match, reg2) && match.size() > 2) { s = match.str(1); s.erase(std::find_if_not(s.rbegin(), s.rend(), ::isspace).base(), s.end()); -- GitLab