std :: regex_search不适合我

时间:2018-02-09 20:08:22

标签: c++ regex windows codeblocks

我有以下代码:

#include <iostream>
#include <string>
#include <regex>

using namespace std;

int main() {
    string s = "hello";
    regex e (".*");
    cout << boolalpha << regex_search(s,e) << endl;

    return 0;
}

每次编译/运行它时,都会打印false。我还尝试将regex_search(s,e)替换为regex_search(s.c_str(),e)。 我还将regex e (".*");更改为:

1) regex e ("");
2) regex e ("hello");
3) regex e ("^.*$");
4) regex e ("^.+$");
5) regex e ("^hello$");
6) regex e (".ell.");
7) regex e ("ell");

所有这些都打印了false。但是,当我使用regex_match()代替regex_search()时,表达式编号0 (original), 2, 6会返回true,这意味着regex_match()正常工作;

我的操作系统 Microsoft Windows [版本10.0.16299.125]
我的IDE是 Code :: Blocks 13.12
编译/链接命令是(我在这篇文章中删除了路径信息):

-------------- Build: Debug in main (compiler: GNU GCC Compiler)---------------

mingw32-g++.exe -Wall -fexceptions -g -std=c++11 -Wall  -c main.cpp -o main.o
mingw32-g++.exe -o main.exe main.o
Output file is main.exe with size 1.62 MB
Process terminated with status 0 (0 minute(s), 2 second(s))
0 error(s), 0 warning(s) (0 minute(s), 2 second(s))


-------------- Run: Debug in main (compiler: GNU GCC Compiler)---------------

Checking for existence: main.exe
Executing: "cb_console_runner.exe" "main.exe"
Process terminated with status 0 (0 minute(s), 1 second(s))

问题很简单:我错过了什么/做错了什么?

0 个答案:

没有答案