diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 9f2a5cd8b9c20902d1a8b4517ad2b5d1a2e355e0..8726a4300be2330a6731288ad4ad590c67b23034 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -1444,23 +1444,27 @@ void CppCodeCompletion::completions(QList<TextEditor::CompletionItem> *completio
             QString keyRegExp;
             keyRegExp += QLatin1Char('^');
             bool first = true;
+            const QLatin1String wordContinuation("[a-z0-9_]*");
             foreach (const QChar &c, key) {
-                if (c.isUpper() && !first)
-                    keyRegExp += QLatin1String("[a-z0-9_]*");
+                if (m_caseSensitivity == CaseInsensitive ||
+                    (m_caseSensitivity == FirstLetterCaseSensitive && !first)) {
 
-                if (m_caseSensitivity == FirstLetterCaseSensitive && !first) {
-                    keyRegExp += QLatin1Char('[');
-                    keyRegExp += QRegExp::escape(c.toLower());
+                    keyRegExp += QLatin1String("(?:");
+                    if (c.isUpper() && !first)
+                        keyRegExp += wordContinuation;
                     keyRegExp += QRegExp::escape(c.toUpper());
-                    keyRegExp += QLatin1Char(']');
+                    keyRegExp += "|";
+                    keyRegExp += QRegExp::escape(c.toLower());
+                    keyRegExp += QLatin1Char(')');
                 } else {
+                    if (c.isUpper() && !first)
+                        keyRegExp += wordContinuation;
                     keyRegExp += QRegExp::escape(c);
                 }
 
                 first = false;
             }
-            const QRegExp regExp(keyRegExp, (m_caseSensitivity == CaseInsensitive)
-                                 ? Qt::CaseInsensitive : Qt::CaseSensitive);
+            const QRegExp regExp(keyRegExp);
 
             foreach (TextEditor::CompletionItem item, m_completions) {
                 if (regExp.indexIn(item.text) == 0) {