string str = "abcd@@@efg$#@&*&%*s123jdk###lfjalkj";
regex pattern("@@@(.*?)###");
smatch match;
if (regex_search(str, match, pattern))
{
string s1 = string(match.first, match.second);
makeToast(this, s1);
}
```
上面字符串 string str = "abcd@@@efg$#@&*&%*s123jdk###lfjalkj"; 测试的时候随便乱写的,我就是想用正则匹配 @@@和### 之间的字符串。
上面代码放到安卓手机上面就无法匹配到结果,windows下调试又可以匹配到,网上都搜索过了没有找到解决办法,求高手指点迷津。
你头文件写错了没。。。
要用这个
#if(CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)
#include <io.h>
#include
#else
#include <regex.h>
#endif
例子:
//检测是不是ip地址
bool checkIsIPAddress(std::string str)
{
#if(CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)
const std::regex pattern("((25|2|1||).){3}(25|2|1||)");
return std::regex_match(str, pattern);
#else
bool isCorrect=true;
char ss = {0};
sprintf(ss, “%s”, str.c_str());
regmatch_t pmatch;
regex_t match_regex;
regcomp(&match_regex,"((25|2|1||)\.){3}(25|2|1||)",
REG_EXTENDED);
if (regexec(&match_regex, ss, 4, pmatch, 0) != 0)
{
isCorrect=false;
}
regfree(&match_regex);
return isCorrect;
#endif
}