ISO Date Regex не работает с std :: regex [duplicate]

Извините, уже слишком поздно на этой стороне земного шара, и я пропустил вашу фразу! :-) Как насчет этой проблемы ? В основном, сервер работает от пути в файловой системе с пробелами в пути?

1
задан user2798694 28 June 2015 в 10:43
поделиться

1 ответ

Ваша проблема заключается в том, что ваши обратные косые черты избегают «1» в вашей строке. Вам нужно сообщить std :: regex, чтобы считать их «\». Вы можете сделать это, используя необработанную строку R "((. +) \ 1 \ 1+)" или путем сбрасывания косых черт, как показано здесь:

#include <regex>
#include <string>
#include <iostream>


int main(){

  std::string s ("xaxababababaxax");
  std::smatch m;
  std::regex e ("(.+)\\1\\1+");

   while (std::regex_search (s,m,e)) {
    for (auto x:m) std::cout << x << " ";
    std::cout << std::endl;
    s = m.suffix().str();
  }

  return 0;
}

Который производит выход

abababab ab 
4
ответ дан Spacemoose 16 August 2018 в 04:22
поделиться
  • 1
    Спасибо! Я также должен был обновить свой gcc. – user2798694 28 June 2015 в 11:10
  • 2
    Как добавить флаг для возврата минимальной строки, которая соответствует, например, aaaaaa, должна совпадать с a, повторенной 6 раз, а не aa повторяется три раза? – user2798694 28 June 2015 в 12:20
  • 3
    Хм. Я должен признать, что вы делаете вещи с регулярными выражениями, которые я раньше не пробовал. Вы можете попробовать использовать «не-жадный оператор», stackoverflow.com/questions/11898998/regex-match-non-greedy , который является «?», и посмотрите, получит ли он нужные вам результаты. Дайте мне знать, что вы узнали! – Spacemoose 28 June 2015 в 12:30
  • 4
    вопросительный знак сделал трюк! Еще раз спасибо!! – user2798694 28 June 2015 в 12:53
  • 5
    Нет проблем. Regex's может быть болью в прикладе, но они действительно полезны для развития. – Spacemoose 28 June 2015 в 14:03
Другие вопросы по тегам:

Похожие вопросы: