每当输入字符串是整数时,我都会尝试检查,但我创建的模式没有返回正结果。
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main()
{
string input = "1";
string int_num = "^0$|^[1-9][0-9]*$";
regex pattern(int_num, regex_constants::grep);
if(regex_match(input, pattern))
cout << "matched\n";
else
cout << "not matched\n";
return 0;
}
最佳答案
您的模式不起作用的原因是因为您指定了正则表达式应该模拟 grep
的语法。
如果您从正则表达式定义中删除该标志,您的模式将正常工作:
string int_num = "^0$|^[1-9][0-9]*$";
regex pattern(int_num);
这是修改后的脚本示例:https://ideone.com/iETnsw
如果必须指定正则表达式语法,请使用 ECMAScript
,而不是 grep
。
关于c++ - 整数匹配正则表达式模式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30306993/