Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyrażenie regularne

Ostatnio zmodyfikowano 2016-01-08 18:26
Autor Wiadomość
Garniturek
Temat założony przez niniejszego użytkownika
Wyrażenie regularne
» 2016-01-08 10:48:24
Witam, mam znaleźć w pliku frazy typu: "temp":281.67, (tylko liczba się zmienia). Próbowałem już parę opcji, ale nie działają, pomocy :)
regex rx( "\"temp\".\d\d\d[[:punct:]]\d\d[[:punct:]]" );
regex rx( "\"temp\".\d\d\d.\d\d." );

Kod:
C/C++
void using_regex( string filename )
{
    fstream plik;
    plik.open( filename, ios::in );
    if( plik.good() == false )
    {
        cout << "Plik nie istnieje" << endl;
        exit( 0 );
    }
    string linia;
    while( getline( plik, linia ) )
    {
        smatch mr;
       
        regex rx( "\"temp\"\w\d\d\d\w\d\d\w" );
       
        while( regex_search( linia, mr, rx ) )
        {
            for( int i = 0; i < mr.size(); i++ )
                 cout << "  matched: \"" << mr.str( 0 ) << "\"" << endl;
           
            str = mr.suffix();
        }
    }
   
    plik.close();
}
P-143113
j23
» 2016-01-08 18:26:22
Zapomniałeś o jednej rzeczy, i pewnie kompilator Ci to wytknął w ostrzeżeniach, że w C\C++ '\' jest znakiem specjalnym, i jeśli chcesz go wstawić jako znak do literału tekstowego, musisz go wstawiać podwójnie '\\'. Czyli Twoje wyrażenie powinno wyglądać tak:
"\"temp\".\\d\\d\\d.\\d\\d."
.
P-143132
« 1 »
  Strona 1 z 1