Инструменты пользователя

Инструменты сайта


develop:qt:input

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:qt:input [2021/10/04 05:41]
admin
develop:qt:input [2021/10/04 07:26] (текущий)
admin
Строка 102: Строка 102:
 ==== Частичное соответствие ==== ==== Частичное соответствие ====
 ----- -----
 +Совпадение части строки, алгоритм менее эффективный т.к. многие оптимизации не применяются.\\
 +Частичный поиск явно запрашивается, указав соответствующий тип в **match()**/**globalmatch()**.\\
  
 +Для получения используется метод **hasPartialMatch()** т.к. **hasMatch()** вернет false, но запрос частичного совпадения все равно может найти полное совпадение, тогда **hasMatch()== true** а **hasPartialMatch()== false**. Объект никогда не сообщает о том и о другом соответствии.\\
  
 +Подстроки (**captured()**) так же не возвращаются, только полная.\\
 +
 +<details>
 +<summary>:!: Пример: Предпочтение полного сопоставления частичному</summary>
 +<code cpp-qt>
 +/*...*/
 +    QRegularExpression vReg("abc\\w+X|def");
 +    QRegularExpressionMatch vMatch= vReg.match("abcdef", 0, QRegularExpression::PartialPreferCompleteMatch);
 +    vMatch.hasMatch(); // == true
 +    vMatch.hasPartialMatch(); // == false
 +    vMatch.captured(0); // == "def" т.к. это полное соответствие и оно в приоритете 
 +/*...*/
 +</code>
 +</details>
 +
 +**Инкрементальное/сегментное соответствие**- в случае если проверочный текст подается порциями, тогда логика проверки учитывает возможное продолжение текста, что собсна влияет на результат.\\
 +Используется флаг **QRegularExpression::PartialPreferFirstMatch**.\\
 +
 +
 +==== Синтаксические ошибки ====
 +-----
 +Синтаксические ошибки шаблона можно проверить методом **isValid()**, до информацию **errorString()**, так же, смещение **patternErrorOffset()**.\\
  
  
develop/qt/input.1633326084.txt.gz · Последнее изменение: 2021/10/04 05:41 — admin