我有一个代码示例:为什么这个正则表达式不匹配这个字符串?
#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”(空格,而不是下划线(很多 '_')
。然后,它应该工作 - 因为我有一个“单词”,然后是一个“空间”,然后是一个“单词”,然后“我想要多少空间,然后是一个”单词“,这应该符合我上面的表达,但是 为什么?
是您的输入函数捕获行尾字符? –
你的I/O代码不好。它通常会进入无限循环,因为它无法检查I/O操作的结果。 –