регулярное выражение («(abc | aa. * | bb. *)») Vs регулярное выражение («(aa. * | bb. * | cc. *)»); [Дубликат]

Я сталкиваюсь со странной проблемой при использовании regex в c ++ 11 (Ubuntu 14.4, gcc 4.8.2)

#include <iostream>
#include <regex>
using namespace std;
int main()
{
    regex r("(abc|aa.*|bb.*)");
    cout<<regex_match("bb11",r)<<endl;  //return false
    cout<<regex_match("aa11",r)<<endl;  //return true
    cout<<regex_match("abc",r)<<endl;   //return true
    return 0;
}

, а

int main()
{
    regex r("(aa.*|bb.*|cc.*)");
    cout<<regex_match("bb11",r)<<endl;  //return true
    cout<<regex_match("aa11",r)<<endl;  //return true
    cout<<regex_match("abc",r)<<endl;   //return false
    return 0;
}

Мне интересно, почему "bb11" получил другой результат?

4 голоса | спросил camino 30 Mayam14 2014, 04:21:53

1 ответ


0

std::regex не поддерживается в GCC до 4.9 .

В 4.8.2 вы получите все виды странного поведения.

ответил Lightness Races in Orbit 30 Mayam14 2014, 04:25:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132