Беглый взгляд на документацию по QRegexp
показывает, что он поддерживает обратные ссылки, в то время как QRegularExpression
не упоминает об этом. Это было бы примечательно, поскольку сопоставление регулярных выражений без обратных ссылок может масштабироваться за линейное время, в то время как обратные ссылки масштабируются как экспоненциальное время (источник [мертвая ссылка], кэшированная версия).
Подобный StackOverflow ответ Также упоминаются основные различия в скорости исполнения. Было бы логично предположить, что новый класс регулярных выражений может использовать новый алгоритм, который позволил бы ему выполнять поиск за линейное время, однако я не знаю об этом напрямую. Есть ли различия, похожие на вышеперечисленные в новом QRegularExpression
учебный класс?
QRegularExpression
отходит от функциональности QRegExp
в 5 конкретных областях:
\A
а также \z
*?
а также +?
модификаторыQRegExp::CaretModes
за исключением QRegExp::CaretAtOffset
Из этих изменений 4 очень актуален для этого вопроса. PCRE — безусловно самый продвинутый доступный механизм регулярных выражений. Так что он, безусловно, поддерживает обратные ссылки, а также многие другие функции QRegExp
никогда не мог стремиться.
Поскольку обоснование отсутствия явного упоминания всех функций, предоставляемых PCRE, связано с тем фактом, что PCRE определяется документом из 70 тыс. Слов. Если вы хотите прожечь тонер-картридж, QRegularExpression
ссылки непосредственно на эту страницу: http://pcre.org/pcre.txt
Между прочим, приведенные цитаты из этого тома — это синтаксис обратной ссылки, поддерживаемый PCRE:
\n
ссылка по номеру (может быть неоднозначной)\gn
ссылка по номеру\g{n}
ссылка по номеру\g{-n}
относительная ссылка по номеру\k<name>
ссылка по имени (Perl)\k'name'
ссылка по имени (Perl)\g{name}
ссылка по имени (Perl)\k{name}
ссылка по имени (.NET)(?P=name)
ссылка по имени (Python)
Других решений пока нет …