Wyrażenie regularne
Ostatnio zmodyfikowano 2016-01-08 18:26
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: 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(); } |
|
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." . |
|
« 1 » |