У меня есть код, который проходит через файл, чтобы найти даты, но не возвращает его, что он нашел совпадение с моим регулярным выражением.Регулярное выражение, не найденное совпадение
КОД:
std::string s(line);
std::smatch m;
std::regex e("^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$");
std::cout << "Target sequence: " << s << std::endl;
std::cout << "Regular expression: ^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$" << std::endl;
std::cout << "The following matches and submatches were found:" << std::endl;
while (std::regex_search(s, m, e)) {
for (auto x : m) std::cout << x << " ";
std::cout << std::endl;
s = m.suffix().str();
}
ВЫВОД:
Success
Target sequence: 12/28/2002 2 15 38 43 50
Regular expression: ^[0,1]?d{1}/(([0-2]?d{1})|([3][0,1]{1}))/(([1]{1}[9]{1}[9]{1
}d{1})|([2-9]{1}d{3}))$
The following matches and submatches were found:
Enter q to quit:
Это мое регулярное выражение не правильно или что-то еще?
Это не исправляет материал, а просто упрощает ваше регулярное выражение: '^ [0,1]? \ D \/(([0-2]? \ D) | (3 [0,1])) \/((199 \ d) | ([2-9] \ d {3})) $ ' – nhahtdh
@nhahtdh спасибо –