diff --git a/src/main/java/org/orekit/rugged/errors/DumpReplayer.java b/src/main/java/org/orekit/rugged/errors/DumpReplayer.java
index f7de72bd96555306265eb2f1e962b1c120f1a761..ca6378a3b1b1bd66efbd14a7042de5494759b8e3 100644
--- a/src/main/java/org/orekit/rugged/errors/DumpReplayer.java
+++ b/src/main/java/org/orekit/rugged/errors/DumpReplayer.java
@@ -33,6 +33,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.NavigableMap;
 import java.util.TreeMap;
+import java.util.regex.Pattern;
 import java.util.stream.Stream;
 
 import org.hipparchus.analysis.differentiation.DerivativeStructure;
@@ -272,6 +273,13 @@ public class DumpReplayer {
     /** Dumped calls. */
     private final List<DumpedCall> calls;
 
+    /** Pattern for delimiting regular expressions. */
+    private static final Pattern SEPARATOR = Pattern.compile("\\s+");
+
+    /** Empty pattern. */
+    private static final Pattern PATTERN = Pattern.compile(" ");
+
+
     /** Simple constructor.
      */
     public DumpReplayer() {
@@ -976,14 +984,14 @@ public class DumpReplayer {
 
             final int colon = line.indexOf(':');
             if (colon > 0) {
-                final String parsedKey = line.substring(0, colon).trim().replaceAll(" ", "_").toUpperCase();
+                final String parsedKey = PATTERN.matcher(line.substring(0, colon).trim()).replaceAll("_").toUpperCase();
                 try {
                     final LineParser parser = LineParser.valueOf(parsedKey);
                     final String[] fields;
                     if (colon + 1 >= line.length()) {
                         fields = new String[0];
                     } else {
-                        fields = line.substring(colon + 1).trim().split("\\s+");
+                        fields = SEPARATOR.split(line.substring(colon + 1).trim());
                     }
                     parser.parse(l, file, line, fields, global);
                 } catch (IllegalArgumentException iae) {