我在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下没有正确支持正则表达式,我的构建是否应该无法编译?我错过了一些明显的东西吗?
答案 0 :(得分:1)
我今天也有同样的问题, 根据我自己的经验,只需改变&#34; _&#34;在表达中的位置。
对于我的例子, 只需替换
std::regex reg("[^. _A-Za-z0-9]");
与
std::regex reg("[^. A-Za-z0-9_]");
它工作正常,也许是因为gcc版本太旧了。