相关疑难解决方法(0)

regex_match和regex_search之间的区别?

我正在尝试使用正则表达式来尝试回答这个问题,并发现虽然regex_match找到匹配,regex_search却没有.

以下程序是用g ++ 4.7.1编译的:

#include <regex>
#include <iostream>

int main()
{
    const std::string s = "/home/toto/FILE_mysymbol_EVENT.DAT";
    std::regex rgx(".*FILE_(.+)_EVENT\\.DAT.*");
    std::smatch match;

    if (std::regex_match(s.begin(), s.end(), rgx))
        std::cout << "regex_match: match\n";
    else
        std::cout << "regex_match: no match\n";

    if (std::regex_search(s.begin(), s.end(), match, rgx))
        std::cout << "regex_search: match\n";
    else
        std::cout << "regex_search: no match\n";
}
Run Code Online (Sandbox Code Playgroud)

输出:

regex_match: match
regex_search: no match

我的假设是两者都应该匹配错误,或者GCC 4.7.1中的库可能存在问题吗?

c++ regex gcc g++

27
推荐指数
2
解决办法
9493
查看次数

在C++ 11中使用正则表达式lookbehinds

为什么我不能在C++ 11中使用lookbehinds?Lookahead工作得很好.

std::regex e("(?<=a)b");
Run Code Online (Sandbox Code Playgroud)

这将抛出以下异常:

The expression contained mismatched ( and ).
Run Code Online (Sandbox Code Playgroud)

这不会抛出任何异常:

std::regex e("a(?=b)");
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

c++ regex c++11

11
推荐指数
1
解决办法
4458
查看次数

标签 统计

c++ ×2

regex ×2

c++11 ×1

g++ ×1

gcc ×1