У меня есть следующий пример кода:Почему это регулярное выражение не соответствует этой строке?
#include <regex>
#include <iostream>
using namespace std;
int main()
{
string input;
regex third("([a-zA-Z]*) ([a-zA-Z]*)[\s]*([a-zA-Z]*)");
smatch third_match;
getline(cin, input);
while (input != "q")
{
if(regex_match(input, third_match, third))
cout << "Ok" << endl;
getline(cin, input);
}
return 0;
}
Если я ввожу строку, скажем:
"Я am_____________happy" (много пространства вместо подчеркивания ('_')
. Затем он должен работать, потому что у меня есть «слово», а затем «пространство», а затем «слово», а затем «сколько пробелов, которые я хочу, а затем« слово », и это должно соответствовать моему выражению выше, но is is Почему?
- ваша функция ввода, фиксирующая символ конца строки? –
Ваш код ввода/вывода плохой. Он переходит в бесконечный цикл в общем случае, потому что он не может проверить результат операции ввода-вывода. –