Wyrażenie regularne.

Odpowiedz Nowy wątek
2013-01-31 14:44

Rejestracja: 7 lat temu

Ostatnio: 6 lat temu

0

Witam

Próbuję rozgryźć problem wyrażenia regularnego, które ma obejmować wszystkie wyrazy, oprócz wyrazów które zawierają konkretny podciąg, np. wszystkie wyrazy bez słowa "cos".
Nie chodzi mi o rozwiązanie w stylu, wyrażenie które akceptuje wyrazy z "cos" i to zanegować w programie. Chodzi mi o negacje w samym wyrażeniu.

Pozostało 580 znaków

Muciek
2013-01-31 14:55
Muciek
0

Ściągnij program do testowania wyrażeń regularnych i kombinuj :)

Pozostało 580 znaków

Rev
2013-01-31 14:57
Rev
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 dzień temu

0

\b((?!cos)\w)*\b


Pozostało 580 znaków

2013-01-31 15:09

Rejestracja: 7 lat temu

Ostatnio: 6 lat temu

0
Rev napisał(a):

\b((?!cos)\w)*\b

Nie przechodzi to u mnie, do wyrażeń regularnych w C++ używam boost/regex.

Pozostało 580 znaków

Rev
2013-01-31 15:35
Rev
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 dzień temu

0
#include <iostream>
#include <boost\regex.hpp>

int main()
{
    using namespace std;
    using namespace boost;

    string text = "jakies costam tam trolocostrolo lolo wyrazy 123costam";
    regex expression("\\b((?!cos)\\w)*\\b");

    sregex_iterator begin(text.cbegin(), text.cend(), expression), end;
    for_each(begin, end, [](const smatch& result) -> bool
    {
        string match = result.str();

        if(match.length() > 0)
            cout << match << "\n";

        return true;
    });
}

Wynik:

jakies
tam
lolo
wyrazy

edytowany 1x, ostatnio: Rev, 2013-01-31 15:36

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0