diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index 005f452a..d84e59d0 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -465,6 +465,7 @@ public final class BahnProvider implements NetworkProvider + "(?:(?:, )?(?:heute )?(Gl\\. " + ParserUtils.P_PLATFORM + ")(?:\\s*)?)?" // position + "(?:,
]*>[^<]*)?" // (ersatzzug message) + "(?:,
[^<]*]*>[^<]*)?" // (ersatzzug message) + + "(?:,
 [^<]*)?" // (sonderzug message) , Pattern.DOTALL); private static final Pattern P_DEPARTURES_URI_STATION_ID = Pattern.compile("input=(\\d+)"); diff --git a/test/de/schildbach/pte/BahnProviderTest.java b/test/de/schildbach/pte/BahnProviderTest.java index a4190c88..7acd122b 100644 --- a/test/de/schildbach/pte/BahnProviderTest.java +++ b/test/de/schildbach/pte/BahnProviderTest.java @@ -185,7 +185,7 @@ public class BahnProviderTest @Test public void departureWithMultipleMessages() { - final Matcher m = assertFineDepartures(""// + final Matcher m = assertFineDepartures("" // + "\n" // + "S 11\n" // + "\n" // @@ -199,6 +199,22 @@ public class BahnProviderTest assertNotNull(m.group(7)); // position } + @Test + public void departureSonderzug() + { + final Matcher m = assertFineDepartures("" // + + "\n" // + + "RE 30534\n" // + + "\n" // + + ">>\n" // + + "Nürnberg Hbf\n" // + + "
\n" // + + "22:58 pünktl., Gl. 2,
 Sonderzug"); + + assertNotNull(m.group(4)); // onTime + assertNotNull(m.group(7)); // position + } + private void assertFineConnectionDetails(String s) { Matcher m = BahnProvider.P_CONNECTION_DETAILS_FINE.matcher(s);