diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp
index 951ca3470..8364e379e 100644
--- a/lib/cppcheck.cpp
+++ b/lib/cppcheck.cpp
@@ -340,11 +340,14 @@ void CppCheck::checkFile(const std::string &code, const char FileName[])
 
             int pos = 0;
             int ovector[30];
-            if (0 <= pcre_exec(re, NULL, str.c_str(), (int)str.size(), pos, 0, ovector, 30))
+            while (0 <= pcre_exec(re, NULL, str.c_str(), (int)str.size(), pos, 0, ovector, 30))
             {
                 unsigned int pos1 = (unsigned int)ovector[0];
                 unsigned int pos2 = (unsigned int)ovector[1];
 
+                // jump to the end of the match for the next pcre_exec
+                pos = pos2;
+
                 // determine location..
                 ErrorLogger::ErrorMessage::FileLocation loc;
                 loc.setfile(_tokenizer.getFiles()->front());