diff --git a/src/search/kateplaintextsearch.cpp b/src/search/kateplaintextsearch.cpp --- a/src/search/kateplaintextsearch.cpp +++ b/src/search/kateplaintextsearch.cpp @@ -27,6 +27,8 @@ #include #include "katepartdebug.h" + +#include //END includes //BEGIN d'tor, c'tor @@ -53,7 +55,7 @@ // abuse regex for whole word plaintext search if (m_wholeWords) { // escape dot and friends - const QString workPattern = QStringLiteral("\\b%1\\b").arg(QRegExp::escape(text)); + const QString workPattern = QStringLiteral("\\b%1\\b").arg(QRegularExpression::escape(text)); return KateRegExpSearch(m_document, m_caseSensitivity).search(workPattern, inputRange, backwards).at(0); } diff --git a/src/search/kateregexpsearch.h b/src/search/kateregexpsearch.h --- a/src/search/kateregexpsearch.h +++ b/src/search/kateregexpsearch.h @@ -59,7 +59,7 @@ * \return Vector of ranges, one for each capture. The first range (index zero) * spans the full match. If the pattern does not match the vector * has length 1 and holds the invalid range (see Range::isValid()). - * \see KTextEditor::Range, QRegExp + * \see KTextEditor::Range, QRegularExpression */ QVector search(const QString &pattern, const KTextEditor::Range &inputRange, bool backwards = false); diff --git a/src/search/katesearchbar.cpp b/src/search/katesearchbar.cpp --- a/src/search/katesearchbar.cpp +++ b/src/search/katesearchbar.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -697,7 +698,7 @@ } return searchOptions().testFlag(WholeWords) ? searchPattern().trimmed() == searchPattern() : - searchOptions().testFlag(Regex) ? QRegExp(searchPattern()).isValid() : + searchOptions().testFlag(Regex) ? QRegularExpression(searchPattern()).isValid() : true; } diff --git a/src/utils/codecompletionmodelcontrollerinterface.cpp b/src/utils/codecompletionmodelcontrollerinterface.cpp --- a/src/utils/codecompletionmodelcontrollerinterface.cpp +++ b/src/utils/codecompletionmodelcontrollerinterface.cpp @@ -20,6 +20,7 @@ #include "codecompletionmodelcontrollerinterface.h" #include +#include #include #include @@ -57,17 +58,20 @@ QString text = view->document()->line(end.line()); - static QRegExp findWordStart(QLatin1String("\\b([_\\w]+)$")); - static QRegExp findWordEnd(QLatin1String("^([_\\w]*)\\b")); + static const QRegularExpression findWordStart(QStringLiteral("\\b[_\\w]+$")); + static const QRegularExpression findWordEnd(QStringLiteral("^[_\\w]*\\b")); Cursor start = end; - if (findWordStart.lastIndexIn(text.left(end.column())) >= 0) { - start.setColumn(findWordStart.pos(1)); + int pos = text.left(end.column()).lastIndexOf(findWordStart); + if (pos >= 0) { + start.setColumn(pos); } - if (findWordEnd.indexIn(text.mid(end.column())) >= 0) { - end.setColumn(end.column() + findWordEnd.cap(1).length()); + QRegularExpressionMatch match; + pos = text.mid(end.column()).indexOf(findWordEnd, 0, &match); + if (pos >= 0) { + end.setColumn(end.column() + match.capturedLength()); } return Range(start, end); @@ -97,8 +101,8 @@ } //Do not abort completions when the text has been empty already before and a newline has been entered - static const QRegExp allowedText(QLatin1String("^(\\w*)")); - return !allowedText.exactMatch(currentCompletion); + static const QRegularExpression allowedText(QLatin1String("^\\w*$")); + return !allowedText.match(currentCompletion).hasMatch(); } void CodeCompletionModelControllerInterface::aborted(KTextEditor::View *view) diff --git a/src/utils/katebookmarks.cpp b/src/utils/katebookmarks.cpp --- a/src/utils/katebookmarks.cpp +++ b/src/utils/katebookmarks.cpp @@ -32,7 +32,7 @@ #include #include -#include +#include #include #include @@ -127,8 +127,8 @@ void KateBookmarks::insertBookmarks(QMenu &menu) { - int line = m_view->cursorPosition().line(); - const QRegExp re(QLatin1String("&(?!&)")); + const int line = m_view->cursorPosition().line(); + const QRegularExpression re(QStringLiteral("&(?!&)")); int next = -1; // -1 means next bookmark doesn't exist int prev = -1; // -1 means previous bookmark doesn't exist diff --git a/src/utils/katecommandrangeexpressionparser.cpp b/src/utils/katecommandrangeexpressionparser.cpp --- a/src/utils/katecommandrangeexpressionparser.cpp +++ b/src/utils/katecommandrangeexpressionparser.cpp @@ -25,6 +25,7 @@ #include "kateview.h" #include "katedocument.h" +#include #include using KTextEditor::Range; @@ -115,10 +116,10 @@ int pos = 0; QList operators_list; - QStringList split = string.split(QRegExp(QLatin1String("[-+](?!([+-]|$))"))); + const QStringList split = string.split(QRegularExpression(QStringLiteral("[-+](?!([+-]|$))"))); QList values; - foreach (const QString &line, split) { + for (const QString &line : split) { pos += line.size(); if (pos < string.size()) { diff --git a/src/utils/katesedcmd.cpp b/src/utils/katesedcmd.cpp --- a/src/utils/katesedcmd.cpp +++ b/src/utils/katesedcmd.cpp @@ -31,7 +31,7 @@ #include #include -#include +#include #include KateCommands::SedReplace *KateCommands::SedReplace::m_instance = nullptr; @@ -155,28 +155,30 @@ bool KateCommands::SedReplace::parse(const QString &sedReplaceString, QString &destDelim, int &destFindBeginPos, int &destFindEndPos, int &destReplaceBeginPos, int &destReplaceEndPos) { // valid delimiters are all non-word, non-space characters plus '_' - QRegExp delim(QLatin1String("^s\\s*([^\\w\\s]|_)")); - if (delim.indexIn(sedReplaceString) < 0) { + QRegularExpression delim(QLatin1String("^s\\s*([^\\w\\s]|_)")); + auto match = delim.match(sedReplaceString); + if (!match.hasMatch()) { return false; } - QString d = delim.cap(1); + const QString d = match.captured(1); qCDebug(LOG_KTE) << "SedReplace: delimiter is '" << d << "'"; - QRegExp splitter(QStringLiteral("^s\\s*") + d + QLatin1String("((?:[^\\\\\\") + d + QLatin1String("]|\\\\.)*)\\") + QRegularExpression splitter(QStringLiteral("^s\\s*") + d + QLatin1String("((?:[^\\\\\\") + d + QLatin1String("]|\\\\.)*)\\") + d + QLatin1String("((?:[^\\\\\\") + d + QLatin1String("]|\\\\.)*)(\\") + d + QLatin1String("[igc]{0,3})?$")); - if (splitter.indexIn(sedReplaceString) < 0) { + match = splitter.match(sedReplaceString); + if (!match.hasMatch()) { return false; } - const QString find = splitter.cap(1); - const QString replace = splitter.cap(2); + const QString find = match.captured(1); + const QString replace = match.captured(2); destDelim = d; - destFindBeginPos = splitter.pos(1); - destFindEndPos = splitter.pos(1) + find.length() - 1; - destReplaceBeginPos = splitter.pos(2); - destReplaceEndPos = splitter.pos(2) + replace.length() - 1; + destFindBeginPos = match.capturedStart(1); + destFindEndPos = match.capturedStart(1) + find.length() - 1; + destReplaceBeginPos = match.capturedStart(2); + destReplaceEndPos = match.capturedStart(2) + replace.length() - 1; return true; } diff --git a/src/variableeditor/variablelistview.cpp b/src/variableeditor/variablelistview.cpp --- a/src/variableeditor/variablelistview.cpp +++ b/src/variableeditor/variablelistview.cpp @@ -22,6 +22,7 @@ #include "variablelistview.h" #include "variableitem.h" +#include #include VariableListView::VariableListView(const QString &variableLine, QWidget *parent) @@ -47,7 +48,7 @@ QStringList variables = tmp.split(QLatin1Char(';'), QString::SkipEmptyParts); - QRegExp sep(QLatin1String("\\s+")); + const QRegularExpression sep(QStringLiteral("\\s+")); for (int i = 0; i < variables.size(); ++i) { QStringList pair = variables[i].split(sep, QString::SkipEmptyParts); if (pair.size() < 2) { diff --git a/src/view/kateview.cpp b/src/view/kateview.cpp --- a/src/view/kateview.cpp +++ b/src/view/kateview.cpp @@ -86,6 +86,7 @@ #include #include #include +#include //#define VIEW_RANGE_DEBUG @@ -3798,10 +3799,9 @@ */ QString regex = QRegExp::escape (m_currentTextForHighlights); if (QRegExp (QStringLiteral("\\b%1").arg(regex)).indexIn (QStringLiteral(" %1 ").arg(m_currentTextForHighlights)) != -1) - regex = QStringLiteral("\\b%1").arg(regex); + regex = QStringLiteral("\\b%1").arg(regex); if (QRegExp (QStringLiteral("%1\\b").arg(regex)).indexIn (QStringLiteral(" %1 ").arg(m_currentTextForHighlights)) != -1) - regex = QStringLiteral("%1\\b").arg(regex); - + regex = QStringLiteral("%1\\b").arg(regex); QVector matches; do { searchRange.setRange(start, visibleRange().end());