File indexing completed on 2023-10-25 09:48:01
0001
0002
0003 #include "FWCore/Utilities/interface/RegexMatch.h"
0004
0005 #include <boost/algorithm/string.hpp>
0006 #include <regex>
0007
0008 namespace edm {
0009
0010
0011
0012 bool untaintString(char const* pattern, char const* regexp) {
0013 std::regex rexp(regexp);
0014 return std::regex_match(pattern, rexp);
0015 }
0016
0017 bool is_glob(std::string const& pattern) { return (pattern.find_first_of("*?") != pattern.npos); }
0018
0019 std::string glob2reg(std::string const& pattern) {
0020 std::string regexp = pattern;
0021 boost::replace_all(regexp, "*", ".*");
0022 boost::replace_all(regexp, "?", ".");
0023 return regexp;
0024 }
0025
0026 std::vector<std::vector<std::string>::const_iterator> regexMatch(std::vector<std::string> const& strings,
0027 std::regex const& regexp) {
0028 std::vector<std::vector<std::string>::const_iterator> matches;
0029 for (std::vector<std::string>::const_iterator i = strings.begin(), iEnd = strings.end(); i != iEnd; ++i) {
0030 if (std::regex_match((*i), regexp)) {
0031 matches.push_back(i);
0032 }
0033 }
0034 return matches;
0035 }
0036
0037 std::vector<std::vector<std::string>::const_iterator> regexMatch(std::vector<std::string> const& strings,
0038 std::string const& pattern) {
0039 std::regex regexp(glob2reg(pattern));
0040 return regexMatch(strings, regexp);
0041 }
0042
0043 }