gpt4 book ai didi

c++ - g++ 和 VS2012 中的正则表达式

转载 作者:行者123 更新时间:2023-11-30 04:20:36 25 4
gpt4 key购买 nike

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

using namespace std;

void Test(const char* str, const char* regExpression)
{
regex rx(regExpression);
bool match = regex_match(str, rx);
bool search = regex_search(str, rx);

cout << "String: " << str << " expression: " << regExpression <<
" match: " << (match ? "yes" : "no ") <<
" search: " << (search ? "yes" : "no ") << endl;
}


int main()
{
Test("a", "a");
Test("a", "abc");
return 0;
}

g++ 中的结果:

String: a  expression: a   match: yes   search: no 
String: a expression: abc match: no search: no

VS2012 中的结果:

String: a  expression: a   match: yes   search: yes
String: a expression: abc match: no search: no

什么是正确的结果?另外,regex_match 和 regex_search 有什么区别?

最佳答案

VS2012 结果是对的。 _match 检查您的字符串是否与表达式匹配,_search 检查您的字符串的某些子字符串是否与表达式匹配。

"a""a" 的任何子字符串都不匹配表达式 "abc"

(我找不到相关的 SO 问题,但已知 gcc(而不是 libstdc++ 的)正则表达式实现存在错误且不完整。)

关于c++ - g++ 和 VS2012 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15185397/

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