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);