30 inline std::regex::flag_type Foam::regExpCxx::syntax()
36 ? std::regex::ECMAScript
37 : std::regex::extended
47 || (
c ==
'*' ||
c ==
'+' ||
c ==
'?')
48 || (
c ==
'(' ||
c ==
')' ||
c ==
'|')
49 || (
c ==
'[' ||
c ==
']')
56 const std::string& str,
61 for (
const char c : str)
63 if (quote &&
c == quote)
98 re_(std::move(rgx.re_)),
108 const bool ignoreCase
114 set(pattern, ignoreCase);
120 const std::string& pattern,
121 const bool ignoreCase
127 set(pattern, ignoreCase);
147 return (ctrl_ == ctrlType::NEGATED);
153 bool old(ctrl_ == ctrlType::NEGATED);
159 ctrl_ = ctrlType::NEGATED;
164 ctrl_ = ctrlType::NORMAL;
174 return ctrl_ == ctrlType::NORMAL ? re_.mark_count() : 0;
180 return ctrl_ && ((re_.flags() & std::regex::icase) == std::regex::icase);
204 std::swap(ctrl_, rgx.ctrl_);
215 (pattern ? std::char_traits<char>::length(pattern) : 0),
239 return std::string::npos;
241 else if (text.empty())
243 if (ctrl_ == ctrlType::NEGATED)
249 return std::string::npos;
256 const bool ok = std::regex_search(text, mat, re_);
258 if (ctrl_ == ctrlType::NEGATED)
267 return mat.position(0);
271 return std::string::npos;
283 const bool ok = (!text.empty() && std::regex_search(text, re_));
285 return (ctrl_ == ctrlType::NEGATED) ? !ok : ok;
297 const bool ok = (!text.empty() && std::regex_match(text, re_));
299 return (ctrl_ == ctrlType::NEGATED) ? !ok : ok;
305 const std::string& text,
316 return std::regex_match(text, matches, re_);