C++ regex_match 不匹配

标签 c++ regex

我在 XCode 上使用 C++。我想使用 regex_match 匹配非字母字符,但似乎有困难:

#include <iostream>
#include <regex>

using namespace std;

int main(int argc, const char * argv[])
{
    cout << "BY-WORD: " << regex_match("BY-WORD", regex("[^a-zA-Z]")) << endl;
    cout << "BYEWORD: " << regex_match("BYEWORD", regex("[^a-zA-Z]")) << endl;

    return 0;
}

返回:

BY-WORD: 0
BYEWORD: 0

我希望匹配“BY-WORD”(因为有连字符),但 regex_match 为两个测试返回 0。

我糊涂了。

最佳答案

regex_match 尝试将整个输入字符串与您提供的正则表达式进行匹配。由于您的表达式只会匹配单个字符,因此在这些输入上它总是会返回 false。

你可能想要 regex_search相反。

关于C++ regex_match 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23368050/

相关文章:

c++ - 什么时候调用 CloseHandle?

c++ - 通过 const_cast 修改 const std::vector<T> 的元素

Unix 上的 C++ : Differences in threading libraries?

javascript - RegExp.prototype.test 返回令人困惑的结果

regex - 正则表达式在所有大写字母上分割时仅找到1个匹配项

基于 C# 正则表达式的日期解析和提取

c++ - 在数据读入函数中将指针存储在 vector 中

c++ - 使用自定义散列函数插入 unordered_set

单撇号之间的Python正则表达式findall()子串

ios - NSPredicate 检查字符串长度