c++ - 整数匹配正则表达式模式不起作用

标签 c++ regex

每当输入字符串是整数时,我都会尝试检查,但我创建的模式没有返回正结果。

#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/

相关文章:

c# - 什么是异常(exception)?

c++ - VC++ 6 项目迁移到 VC++ 2008 时出现模板类编译错误

c++ - 当您可以从consteval函数创建constexpr对象时,为什么constexpr函数不能消耗consteval函数?

c++ - 有没有办法专门化继承对象的一般方法

javascript - AngularJS - 突出显示部分文本会导致非英语语言中的单词损坏

python - 如何通过使用正则表达式来区分带有URL的域名地址?

c++ - 异步纹理加载工具

python - 对重新编译行为感到困惑

c# - 统计正则表达式在字符串中匹配的次数

javascript - 正则表达式打破单词而不是匹配整个单词