2017-06-22 1 views
0

DieseLange regulären Ausdruck verursacht Fehler

std::regex line("[\s]+\+?[0-9]+.[0-9]+[\s]+\+?[0-9]+.[0-9]+[\s]+\+?[0-9]+.[0-9]+[\s]"); 

Linie bewirkt dies

Exception thrown at 0x00007FFE39E69E08 in DosyaOkuHizli.exe: Microsoft C++ exception: std::regex_error at memory location 0x000000F751EFEAB0. 
Exception thrown at 0x00007FFE39E69E08 in DosyaOkuHizli.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000. 
Exception thrown at 0x00007FFE39E69E08 in DosyaOkuHizli.exe: Microsoft C++ exception: std::regex_error at memory location 0x000000F751EFEAB0. 
Unhandled exception at 0x00007FFE39E69E08 in DosyaOkuHizli.exe: Microsoft C++ exception: std::regex_error at memory location 0x000000F751EFEAB0. 

aber

std::regex line("abc"); 

nicht.

Der lange Ausdruck arbeitet hier: https://www.myregextester.com/index.php

Ich bin nur 3 konsequent Gleitkommawerte zwischen anderen Daten zu erhalten versuchen.


Visual Studio 2015 Community Edition Debug 64 Bit. Windows 10.

+0

Was ist die Eingabezeichenfolge? – revo

+0

foo bar etwaswhitespace +123.324 etwaswhitespace 33434.4545 somewhitespace -4344.4545 somewhitespace biz baz –

Antwort

3

Sie müssen entweder die Rückseite mit \\ (zwei für eins) schlitzt zu entkommen, oder verwenden Sie eine rohe Stringliteral wie folgt aus:

regex line{R"([\s]+\+?[0-9]+.[0-9]+[\s]+\+?[0-9]+.[0-9]+[\s]+\+?[0-9]+.[0-9]+[\s])"}; 

Raw Stringliterale umgeben die Zeichenfolge mit (mindestens) R"( und )".

Lesen Sie mehr über Raw String Literale HERE - Syntax (6).