diff --git a/src/de/schildbach/pte/SbbProvider.java b/src/de/schildbach/pte/SbbProvider.java
index ac71e669..bd718f3c 100644
--- a/src/de/schildbach/pte/SbbProvider.java
+++ b/src/de/schildbach/pte/SbbProvider.java
@@ -204,8 +204,8 @@ public class SbbProvider implements NetworkProvider
+ "
\n?(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n?)? | .*?" // departureDate
+ "(?:(\\d{2}:\\d{2})| ) | .*?" // departureTime
+ "\n?\\s*(.+?)?\\s*\n? | .*?" // departurePosition
- + "
.*?" // line
- + "(?:\n?(\\d+) Min\\..*?)? | .*?" // min
+ + "_pic.gif\")
.*?" // line
+ + "(?:\n?(\\d+) Min\\..*? | .*?)?" // min
+ "" // arrivalId,
+ "(.*?).*?" // arrival
+ "\n?(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n?)? | .*?" // arrivalDate
@@ -433,6 +433,7 @@ public class SbbProvider implements NetworkProvider
}
private static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zÄÖÜäöüß]+)[\\s-]*(.*)");
+ private static final Pattern P_NORMALIZE_LINE_SBAHN = Pattern.compile("s\\d*");
private static String normalizeLine(final String type, final String line)
{
@@ -457,13 +458,17 @@ public class SbbProvider implements NetworkProvider
return "I" + strippedLine;
if (type.equals("tha")) // Thalys
return "I" + strippedLine;
+ if (type.equals("rj")) // RailJet, Österreichische Bundesbahnen
+ return "I" + strippedLine;
if (type.equals("r"))
return "R" + strippedLine;
if (type.equals("re"))
return "R" + strippedLine;
if (type.equals("ir"))
return "R" + strippedLine;
- if (type.matches("s\\d*"))
+ if (type.equals("d"))
+ return "R" + strippedLine;
+ if (P_NORMALIZE_LINE_SBAHN.matcher(type).matches())
return "S" + strippedLine;
if (type.equals("tra"))
return "T" + strippedLine;
@@ -529,7 +534,7 @@ public class SbbProvider implements NetworkProvider
return "R" + number;
if (type.equals("IR")) // InterRegio
return "RIR" + number;
- if (type.equals("D")) // D-Zug?
+ if (type.equals("D"))
return "RD" + number;
if (type.equals("E"))
return "RE" + number;
diff --git a/test/de/schildbach/pte/SbbProviderTest.java b/test/de/schildbach/pte/SbbProviderTest.java
index f14d98c4..a14edf07 100644
--- a/test/de/schildbach/pte/SbbProviderTest.java
+++ b/test/de/schildbach/pte/SbbProviderTest.java
@@ -28,6 +28,47 @@ import org.junit.Test;
*/
public class SbbProviderTest
{
+ @Test
+ public void tripThatTriggeredLongRunningMatch()
+ {
+ assertFineConnectionDetails("\n" //
+ + " \n" //
+ + " | \n" //
+ + "\n" //
+ + "Budapest-Keleti pu. | \n" //
+ + "\n" //
+ + "Di, 10.08.10\n" //
+ + " | \n" //
+ + "ab | 21:05 | \n" //
+ + " | \n" //
+ + "\n" //
+ + " \n" //
+ + "\n" //
+ + "EN 462\n" //
+ + "\n" //
+ + " | \n" //
+ + "\n" //
+ + "\n" //
+ + " \n" //
+ + " \n" //
+ + " \n" //
+ + " \n" //
+ + " \n" //
+ + " | \n" //
+ + "\n" //
+ + "\n" //
+ + " | \n" //
+ + "\n" //
+ + "München Hbf | \n" //
+ + "\n" //
+ + "Mi, 11.08.10\n" //
+ + " | \n" //
+ + "an | 06:15 | \n" //
+ + "12 \n" //
+ + " | \n");
+ }
+
@Test
public void tripWithoutDate()
{