繁体   English   中英

C++ 正则表达式在 ideone.com 上匹配,但在 Android NDK 构建中不匹配

[英]C++ regex matches on ideone.com but not in Android NDK build

我有以下程序在ideone 中正常工作

#include <iostream>
#include <regex>
using namespace std;

int main() {
    if (regex_match("test", regex("^[_a-z0-9]{3,12}$"))) {
        cout << "match" << endl;
    } else {
        cout << "no match" << endl;
    }
    return 0;
}

它按预期匹配。 只需检查包含 3 到 12 个字母数字字符或下划线的字符串。

但是,在 Android 上的本机代码中运行的相同代码(使用 ndk-build 和 gnustl_shared 构建)失败(不匹配)。

如果 Android 下不正确支持正则表达式,我的构建不应该无法编译吗? 我在这里遗漏了一些明显的东西吗?

我今天遇到了同样的问题,根据我自己的经验,只需更改表达式中的“_”位置即可。

对于我的例子,只需替换

std::regex reg("[^. _A-Za-z0-9]");

std::regex reg("[^. A-Za-z0-9_]");

它工作正常,也许是因为gcc版本太旧了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM