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