diff --git a/src/main/java/com/android/tools/r8/retrace/internal/PlainStackTraceVisitor.java b/src/main/java/com/android/tools/r8/retrace/internal/PlainStackTraceVisitor.java
index 45b0c28..90fedbd 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/PlainStackTraceVisitor.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/PlainStackTraceVisitor.java
@@ -167,8 +167,8 @@
               .registerClassName(classStartIndex, methodSeparator, ClassNameType.TYPENAME)
               .registerMethodName(methodSeparator + 1, parensStart);
       // Check if we have a filename and position.
-      int separatorIndex = firstCharFromIndex(line, parensStart, ':');
-      if (separatorIndex < parensEnd) {
+      int separatorIndex = line.lastIndexOf(':', parensEnd);
+      if (separatorIndex > -1 && separatorIndex < parensEnd) {
         builder.registerSourceFile(parensStart + 1, separatorIndex);
         builder.registerLineNumber(separatorIndex + 1, parensEnd);
       } else {
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceRegularExpression.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceRegularExpression.java
index e5a2906..d475594 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceRegularExpression.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceRegularExpression.java
@@ -166,6 +166,8 @@
     }
   }
 
+  private static final String anyLetterWithMarkers = "\\p{L}\\p{M}*+";
+
   // TODO(b/145731185): Extend support for identifiers with strings inside back ticks.
   private static final String javaIdentifierSegment =
       "\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*";
@@ -273,7 +275,7 @@
 
     @Override
     String subExpression() {
-      return "(?:(\\w*[\\. ])?(\\w*)?)";
+      return "(?:([" + anyLetterWithMarkers + "_: \\.]*[" + anyLetterWithMarkers + "_\\.])?)";
     }
 
     @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
index 458f56c..0c7dd7a 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
@@ -23,6 +23,7 @@
 import com.android.tools.r8.retrace.stacktraces.AmbiguousWithMultipleLineMappingsStackTrace;
 import com.android.tools.r8.retrace.stacktraces.AmbiguousWithSignatureNonVerboseStackTrace;
 import com.android.tools.r8.retrace.stacktraces.CircularReferenceStackTrace;
+import com.android.tools.r8.retrace.stacktraces.ColonInFileNameStackTrace;
 import com.android.tools.r8.retrace.stacktraces.FileNameExtensionStackTrace;
 import com.android.tools.r8.retrace.stacktraces.InlineFileNameStackTrace;
 import com.android.tools.r8.retrace.stacktraces.InlineFileNameWithInnerClassesStackTrace;
@@ -31,6 +32,7 @@
 import com.android.tools.r8.retrace.stacktraces.InlineWithLineNumbersStackTrace;
 import com.android.tools.r8.retrace.stacktraces.InvalidStackTrace;
 import com.android.tools.r8.retrace.stacktraces.MemberFieldOverlapStackTrace;
+import com.android.tools.r8.retrace.stacktraces.MultipleDotsInFileNameStackTrace;
 import com.android.tools.r8.retrace.stacktraces.NamedModuleStackTrace;
 import com.android.tools.r8.retrace.stacktraces.NullStackTrace;
 import com.android.tools.r8.retrace.stacktraces.ObfucatedExceptionClassStackTrace;
@@ -38,6 +40,7 @@
 import com.android.tools.r8.retrace.stacktraces.RetraceAssertionErrorStackTrace;
 import com.android.tools.r8.retrace.stacktraces.StackTraceForTest;
 import com.android.tools.r8.retrace.stacktraces.SuppressedStackTrace;
+import com.android.tools.r8.retrace.stacktraces.UnicodeInFileNameStackTrace;
 import com.android.tools.r8.retrace.stacktraces.UnknownSourceStackTrace;
 import com.android.tools.r8.utils.BooleanUtils;
 import com.google.common.collect.ImmutableList;
@@ -193,7 +196,22 @@
   }
 
   @Test
-  public void testMemberFieldOverlapStackTrace() throws Exception {
+  public void testColonInSourceFileNameStackTrace() {
+    runRetraceTest(new ColonInFileNameStackTrace());
+  }
+
+  @Test
+  public void testMultipleDotsInFileNameStackTrace() {
+    runRetraceTest(new MultipleDotsInFileNameStackTrace());
+  }
+
+  @Test
+  public void testUnicodeInFileNameStackTrace() {
+    runRetraceTest(new UnicodeInFileNameStackTrace());
+  }
+
+  @Test
+  public void testMemberFieldOverlapStackTrace() {
     MemberFieldOverlapStackTrace stackTraceForTest = new MemberFieldOverlapStackTrace();
     runRetraceTest(stackTraceForTest);
     inspectRetraceTest(stackTraceForTest, stackTraceForTest::inspectField);
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/ColonInFileNameStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/ColonInFileNameStackTrace.java
new file mode 100644
index 0000000..0bdb870
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/ColonInFileNameStackTrace.java
@@ -0,0 +1,35 @@
+// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.retrace.stacktraces;
+
+import com.google.common.collect.ImmutableList;
+import java.util.List;
+
+public class ColonInFileNameStackTrace implements StackTraceForTest {
+
+  @Override
+  public List<String> obfuscatedStackTrace() {
+    return ImmutableList.of("  at a.s(:foo::bar:1)");
+  }
+
+  @Override
+  public String mapping() {
+    return "some.Class -> a:\n"
+        // Sourcefile metadata.
+        + "# {\"id\":\"sourceFile\",\"fileName\":\"Class.kt\"}\n"
+        + "    1:3:int strawberry(int):99:101 -> s\n"
+        + "    4:5:int mango(float):121:122 -> s\n";
+  }
+
+  @Override
+  public List<String> retracedStackTrace() {
+    return ImmutableList.of("  at some.Class.strawberry(Class.kt:99)");
+  }
+
+  @Override
+  public int expectedWarnings() {
+    return 0;
+  }
+}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleDotsInFileNameStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleDotsInFileNameStackTrace.java
new file mode 100644
index 0000000..a67335f
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleDotsInFileNameStackTrace.java
@@ -0,0 +1,35 @@
+// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.retrace.stacktraces;
+
+import com.google.common.collect.ImmutableList;
+import java.util.List;
+
+public class MultipleDotsInFileNameStackTrace implements StackTraceForTest {
+
+  @Override
+  public List<String> obfuscatedStackTrace() {
+    return ImmutableList.of("  at a.s(foo.bar.baz:1)");
+  }
+
+  @Override
+  public String mapping() {
+    return "some.Class -> a:\n"
+        // Sourcefile metadata.
+        + "# {\"id\":\"sourceFile\",\"fileName\":\"Class.kt\"}\n"
+        + "    1:3:int strawberry(int):99:101 -> s\n"
+        + "    4:5:int mango(float):121:122 -> s\n";
+  }
+
+  @Override
+  public List<String> retracedStackTrace() {
+    return ImmutableList.of("  at some.Class.strawberry(Class.kt:99)");
+  }
+
+  @Override
+  public int expectedWarnings() {
+    return 0;
+  }
+}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/UnicodeInFileNameStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnicodeInFileNameStackTrace.java
new file mode 100644
index 0000000..5090c39
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnicodeInFileNameStackTrace.java
@@ -0,0 +1,35 @@
+// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.retrace.stacktraces;
+
+import com.google.common.collect.ImmutableList;
+import java.util.List;
+
+public class UnicodeInFileNameStackTrace implements StackTraceForTest {
+
+  @Override
+  public List<String> obfuscatedStackTrace() {
+    return ImmutableList.of("  at a.s(Blåbærgrød.jàvà:1)");
+  }
+
+  @Override
+  public String mapping() {
+    return "some.Class -> a:\n"
+        // Sourcefile metadata.
+        + "# {\"id\":\"sourceFile\",\"fileName\":\"Class.kt\"}\n"
+        + "    1:3:int strawberry(int):99:101 -> s\n"
+        + "    4:5:int mango(float):121:122 -> s\n";
+  }
+
+  @Override
+  public List<String> retracedStackTrace() {
+    return ImmutableList.of("  at some.Class.strawberry(Class.kt:99)");
+  }
+
+  @Override
+  public int expectedWarnings() {
+    return 0;
+  }
+}
