diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java
index 165c09ec..951aa0d4 100644
--- a/src/de/schildbach/pte/BahnProvider.java
+++ b/src/de/schildbach/pte/BahnProvider.java
@@ -452,7 +452,7 @@ public final class BahnProvider implements NetworkProvider
+ "(?: (?:(pünktl\\.)|ca. \\+(\\d+)))?" // ontime, delay
+ "(?: k\\.A\\.)?" //
+ "(?:, ([^<]*))?" // message
- + "(?:(?:, )?(Gl\\. " + ParserUtils.P_PLATFORM + "))?" // position
+ + "(?:(?:, )?(?:heute )?(Gl\\. " + ParserUtils.P_PLATFORM + ")(?:\\s*)?)?" // position
, Pattern.DOTALL);
private static final Pattern P_DEPARTURES_URI_STATION_ID = Pattern.compile("input=(\\d+)");
diff --git a/src/de/schildbach/pte/ParserUtils.java b/src/de/schildbach/pte/ParserUtils.java
index 2a6895fe..5a968167 100644
--- a/src/de/schildbach/pte/ParserUtils.java
+++ b/src/de/schildbach/pte/ParserUtils.java
@@ -246,5 +246,5 @@ public final class ParserUtils
return link.substring(link.length() - 10);
}
- public static final String P_PLATFORM = "[\\wÄÖÜäöüßáàâéèêíìîóòôúùû\\. -/]+";
+ public static final String P_PLATFORM = "[\\wÄÖÜäöüßáàâéèêíìîóòôúùû\\. -/]+?";
}
diff --git a/test/de/schildbach/pte/BahnProviderTest.java b/test/de/schildbach/pte/BahnProviderTest.java
index c515728e..54081bfa 100644
--- a/test/de/schildbach/pte/BahnProviderTest.java
+++ b/test/de/schildbach/pte/BahnProviderTest.java
@@ -78,6 +78,32 @@ public class BahnProviderTest
+ "07:02 ca. +5, Fährt heute nur bis Düsseldorf Hbf, Gl. 10");
}
+ @Test
+ public void departureUpdatedPosition()
+ {
+ assertFineDepartures("" //
+ + "\n" //
+ + "RB 30240\n" //
+ + "\n" //
+ + ">>\n" //
+ + "Holzkirchen\n" //
+ + "
\n" //
+ + "17:10 pünktl., heute Gl. 7 ");
+ }
+
+ @Test
+ public void departureMessageAndUpdatedPosition()
+ {
+ assertFineDepartures("" //
+ + "\n" //
+ + "CNL 450\n" //
+ + "\n" //
+ + ">>\n" //
+ + "Paris Est\n" //
+ + "
\n" //
+ + "19:57 pünktl., Änderung im Zuglauf!, heute Gl. 7 ");
+ }
+
@Test
public void departureWithWeirdMessage()
{
@@ -104,7 +130,7 @@ public class BahnProviderTest
Matcher m = BahnProvider.P_DEPARTURES_FINE.matcher(s);
assertTrue(m.matches());
- ParserUtils.printGroups(m);
+ // ParserUtils.printGroups(m);
assertNotNull(m.group(1)); // line
assertNotNull(m.group(2)); // destination