Regex -Versäumnis [geschlossen]C++

Programme in C++. Entwicklerforum
Anonymous
 Regex -Versäumnis [geschlossen]

Post by Anonymous »

Zuerst der Code: < /p>

Code: Select all

keyName = L"(CONSTRAINT\\s+\\w\\s+)?\\s+FOREIGN\\s+kEY\\s+(\\s+id\\s+)\\s+REFERENCES\\s+leagues\\s+(\\s+id\\s+)\\s+";

createCommand = L"CREATE TABLE OWNERS(OWNERID INTEGER PRIMARY KEY, ID INTEGER, OWNERNAME VARCHAR(100),FOREIGN KEY(ID) REFERENCES LEAGUES(ID))";

std::wregex pattern( keyName, std::regex_constants::icase );
std::wsmatch findings;
if( std::regex_match( createCommand, findings, pattern ) )
{
auto start = findings[1].first - createCommand.begin();
auto end = findings[1].second - createCommand.begin();
printf( "Match found" );
}
< /code>
Dieser Code findet die Übereinstimmung nicht. < /p>
Was fehlt mir?(CONSTRAINT\\s+\\w+\\s+)?FOREIGN\\s+kEY\\s*\\(\\s*(\\')?id(\\')?\\s*\\)\\s*REFERENCES\\s+(\\')?leagues(\\')?\\s*\\(\\s*(\\')?id(\\')?\\s*\\)\\s*"
< /code>
Und es stimmt nicht überein. Seltsam, aber ok. < /P>
Jetzt werde ich Folgendes verwenden: < /p>
if( std::regex_search( createCommand, findings, pattern ) )
{
auto start = findings[0].first - createCommand.begin();
auto end = start + keyName.length();
printf( "Match found" );
}
wobei Keyname ein Muster für übereinstimmende/suche ist. Ist es gut? Wird Keyname.length () eine ordnungsgemäße Länge und die Position starten und end korrekt eingestellt?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post