Отказ от корзины совпадать [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Отказ от корзины совпадать [закрыто]

Сообщение Anonymous »

Сначала код: < /p>

Код: Выделить всё

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>
Этот код не находит совпадение. < /p>
Чего мне не хватает?(CONSTRAINT\\s+\\w+\\s+)?FOREIGN\\s+kEY\\s*\\(\\s*(\\')?id(\\')?\\s*\\)\\s*REFERENCES\\s+(\\')?leagues(\\')?\\s*\\(\\s*(\\')?id(\\')?\\s*\\)\\s*"
< /code>
И это не соответствует. Странно, но хорошо. < /P>
Теперь я буду использовать следующее: < /p>
if( std::regex_search( createCommand, findings, pattern ) )
{
auto start = findings[0].first - createCommand.begin();
auto end = start + keyName.length();
printf( "Match found" );
}
где имя ключа - это шаблон для совпадения/поиска. Это хорошо? Будет ли keyname.length () даст мне правильную длину, и позиция запуска и end будет установлена правильно?

Подробнее здесь: https://stackoverflow.com/questions/797 ... e-to-match
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»