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

时间:2016-10-15 22:07:04

标签: android c++ android-ndk

我在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上使用本机代码运行的相同代码(使用带有gnustl_shared的ndk-build构建)失败(不匹配)。

如果在Android下没有正确支持正则表达式,我的构建是否应该无法编译?我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

我今天也有同样的问题, 根据我自己的经验,只需改变&#34; _&#34;在表达中的位置。

对于我的例子, 只需替换

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

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

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