gpt4 book ai didi

c++ - Xcode 中 POSIX RegEx 的奇怪结果

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:48 25 4
gpt4 key购买 nike

我刚刚使用 regex.h(跨平台)切换到内置正则表达式功能。使用以下简单的正则表达式,许多有效的输入,例如 as@abc.com 现在都失败了(其中 ab@abc.com 仍然可以正常工作):

^[^@\s]+@[^@\s]+\.[^\s\.@]+$

调用代码为:

return Common::regexMatch("^[^@\\s]+@[^@\\s]+\\.[^\\s\\.@]+$", userInput);

下面是实现:

#import "regex.h"

bool Common::regexMatch(const string& regex, const string& text) {
//return [[NSString stringWithCString:text.c_str() encoding:NSUTF8StringEncoding] isMatchedByRegex:[NSString stringWithCString:regex.c_str() encoding:NSUTF8StringEncoding]];

regex_t re = {0};
if (regcomp(&re, regex.c_str(), REG_NOSUB | REG_EXTENDED | REG_ICASE) != 0)
return false;
int status = regexec(&re, text.c_str(), (size_t)0, NULL, 0);
regfree(&re);
if (status != 0)
return false;
return true;
}

令人困惑的是,当正则表达式模式中根本没有字母规范时,它会根据不同的字母进行区分。而且它对不喜欢的输入非常一致。 TIA。

最佳答案

事实证明 POSIX Extended 不支持转义空格字符,但它可以处理文字空格,所以我将所有的“\s”替换为“”并立即启动。

有关详细信息,请参阅 https://stackoverflow.com/a/400316/497357

关于c++ - Xcode 中 POSIX RegEx 的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com