diff --git a/LanguageRecogniser/Cpp/CppClassDiagramVisitor.cs b/LanguageRecogniser/Cpp/CppClassDiagramVisitor.cs
index 5304757dda98ae33b4ec7499c92aebcd91a950b1..ba6ae40fa7b54b4a3a514656b2b7a0206949d067 100644
--- a/LanguageRecogniser/Cpp/CppClassDiagramVisitor.cs
+++ b/LanguageRecogniser/Cpp/CppClassDiagramVisitor.cs
@@ -144,8 +144,8 @@ public class CppClassDiagramVisitor : CPP14ParserBaseVisitor<object>
         string compositionPattern = @"^(?:std::)?(?:vector<)?(\w+)>?$";
 
         // Check if the property type matches aggregation or composition
-        Match aggregationMatch = Regex.Match(atribute.Type, aggregationPattern);
-        Match compositionMatch = Regex.Match(atribute.Type, compositionPattern);
+        Match aggregationMatch = Regex.Match(atribute.Type, aggregationPattern, RegexOptions.NonBacktracking);
+        Match compositionMatch = Regex.Match(atribute.Type, compositionPattern, RegexOptions.NonBacktracking);
         int groupMatch = 1;
         if (aggregationMatch.Success && !string.IsNullOrEmpty(aggregationMatch.Groups[groupMatch].Value))
         {