我有以下代码:
#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))
问题很简单:我错过了什么/做错了什么?