mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-14 08:40:29 +00:00
performance-optimized lots of regular expressions
git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@160 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
parent
3a4e676617
commit
313ebe8d02
6 changed files with 37 additions and 37 deletions
|
@ -165,8 +165,8 @@ public final class BahnProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Pattern P_PRE_ADDRESS = Pattern.compile(
|
private static final Pattern P_PRE_ADDRESS = Pattern.compile(
|
||||||
"<select name=\"(REQ0JourneyStopsS0K|REQ0JourneyStopsZ0K|REQ0JourneyStops1\\.0K)\" class=\"nofullwidth\">(.*?)</select>", Pattern.DOTALL);
|
"<select name=\"(REQ0JourneyStopsS0K|REQ0JourneyStopsZ0K|REQ0JourneyStops1\\.0K)\"[^>]*>(.*?)</select>", Pattern.DOTALL);
|
||||||
private static final Pattern P_ADDRESSES = Pattern.compile("<option.*?>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
private static final Pattern P_ADDRESSES = Pattern.compile("<option[^>]*>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
||||||
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
|
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
|
||||||
.compile("(zu dicht beieinander|mehrfach vorhanden oder identisch)|(leider konnte zu Ihrer Anfrage keine Verbindung gefunden werden)|(derzeit nur Auskünfte vom)");
|
.compile("(zu dicht beieinander|mehrfach vorhanden oder identisch)|(leider konnte zu Ihrer Anfrage keine Verbindung gefunden werden)|(derzeit nur Auskünfte vom)");
|
||||||
|
|
||||||
|
@ -230,11 +230,11 @@ public final class BahnProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Pattern P_CONNECTIONS_HEAD = Pattern.compile(".*" //
|
private static final Pattern P_CONNECTIONS_HEAD = Pattern.compile(".*" //
|
||||||
+ "von: <span class=\"bold\">(.*?)</span>.*?" // from
|
+ "von: <span class=\"bold\">([^<]*)</span>.*?" // from
|
||||||
+ "nach: <span class=\"bold\">(.*?)</span>.*?" // to
|
+ "nach: <span class=\"bold\">([^<]*)</span>.*?" // to
|
||||||
+ "Datum: <span class=\"bold\">.., (.*?)</span>.*?" // currentDate
|
+ "Datum: <span class=\"bold\">.., (\\d{2}\\.\\d{2}\\.\\d{2})</span>.*?" // currentDate
|
||||||
+ "(?:<a href=\"(http://mobile.bahn.de/bin/mobil/query.exe/dox[^\"]*?)\">.*?Früher.*?)?" // linkEarlier
|
+ "(?:<a href=\"([^\"]*)\"><img [^>]*>\\s*Früher.*?)?" // linkEarlier
|
||||||
+ "(?:<a class=\"noBG\" href=\"(http://mobile.bahn.de/bin/mobil/query.exe/dox[^\"]*?)\">.*?Später.*?)?" // linkLater
|
+ "(?:<a class=\"noBG\" href=\"([^\"]*)\"><img [^>]*>\\s*Später.*?)?" // linkLater
|
||||||
, Pattern.DOTALL);
|
, Pattern.DOTALL);
|
||||||
private static final Pattern P_CONNECTIONS_COARSE = Pattern.compile("<tr><td class=\"overview timelink\">(.+?)</td></tr>", Pattern.DOTALL);
|
private static final Pattern P_CONNECTIONS_COARSE = Pattern.compile("<tr><td class=\"overview timelink\">(.+?)</td></tr>", Pattern.DOTALL);
|
||||||
private static final Pattern P_CONNECTIONS_FINE = Pattern.compile(".*?" //
|
private static final Pattern P_CONNECTIONS_FINE = Pattern.compile(".*?" //
|
||||||
|
@ -302,11 +302,11 @@ public final class BahnProvider implements NetworkProvider
|
||||||
static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile("<span class=\"bold\">\\s*(.+?)\\s*</span>.*?" // departure
|
static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile("<span class=\"bold\">\\s*(.+?)\\s*</span>.*?" // departure
|
||||||
+ "(?:" //
|
+ "(?:" //
|
||||||
+ "<span class=\"bold\">\\s*(.+?)\\s*</span>.*?" // line
|
+ "<span class=\"bold\">\\s*(.+?)\\s*</span>.*?" // line
|
||||||
+ "ab\\s+(?:<span.*?>.*?</span>)?\\s*(\\d+:\\d+)\\s*(?:<span.*?>.*?</span>)?" // departureTime
|
+ "ab\\s+(?:<span[^>]*>.*?</span>)?\\s*(\\d+:\\d+)\\s*(?:<span[^>]*>.*?</span>)?" // departureTime
|
||||||
+ "\\s*(Gl\\. .+?)?\\s*\n?" // departurePosition
|
+ "\\s*(Gl\\. .+?)?\\s*\n?" // departurePosition
|
||||||
+ "am\\s+(\\d+\\.\\d+\\.\\d+).*?" // departureDate
|
+ "am\\s+(\\d+\\.\\d+\\.\\d+).*?" // departureDate
|
||||||
+ "<span class=\"bold\">\\s*(.+?)\\s*</span><br />.*?" // arrival
|
+ "<span class=\"bold\">\\s*(.+?)\\s*</span><br />.*?" // arrival
|
||||||
+ "an\\s+(?:<span.*?>.*?</span>)?\\s*(\\d+:\\d+)\\s*(?:<span.*?>.*?</span>)?" // arrivalTime
|
+ "an\\s+(?:<span[^>]*>.*?</span>)?\\s*(\\d+:\\d+)\\s*(?:<span[^>]*>.*?</span>)?" // arrivalTime
|
||||||
+ "\\s*(Gl\\. .+?)?\\s*\n?" // arrivalPosition
|
+ "\\s*(Gl\\. .+?)?\\s*\n?" // arrivalPosition
|
||||||
+ "am\\s+(\\d+\\.\\d+\\.\\d+).*?" // arrivalDate
|
+ "am\\s+(\\d+\\.\\d+\\.\\d+).*?" // arrivalDate
|
||||||
+ "|" //
|
+ "|" //
|
||||||
|
|
|
@ -307,9 +307,9 @@ public class MvvProvider implements NetworkProvider
|
||||||
throw new IllegalArgumentException(locationType.toString());
|
throw new IllegalArgumentException(locationType.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Pattern P_PRE_ADDRESS = Pattern.compile("<select name=\"(name_origin|name_destination|name_via)\".*?>(.*?)</select>",
|
private static final Pattern P_PRE_ADDRESS = Pattern.compile("<select name=\"(name_origin|name_destination|name_via)\"[^>]*>(.*?)</select>",
|
||||||
Pattern.DOTALL);
|
Pattern.DOTALL);
|
||||||
private static final Pattern P_ADDRESSES = Pattern.compile("<option.*?>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
private static final Pattern P_ADDRESSES = Pattern.compile("<option[^>]*>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
||||||
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern.compile(
|
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern.compile(
|
||||||
"(Start und Ziel sind identisch)|(konnte keine Verbindung gefunden werden)", Pattern.CASE_INSENSITIVE);
|
"(Start und Ziel sind identisch)|(konnte keine Verbindung gefunden werden)", Pattern.CASE_INSENSITIVE);
|
||||||
|
|
||||||
|
|
|
@ -119,8 +119,8 @@ public class OebbProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Pattern P_PRE_ADDRESS = Pattern.compile(
|
private static final Pattern P_PRE_ADDRESS = Pattern.compile(
|
||||||
"<select.*? name=\"(REQ0JourneyStopsS0K|REQ0JourneyStopsZ0K|REQ0JourneyStops1\\.0K)\".*?>(.*?)</select>", Pattern.DOTALL);
|
"<select.*? name=\"(REQ0JourneyStopsS0K|REQ0JourneyStopsZ0K|REQ0JourneyStops1\\.0K)\"[^>]*>(.*?)</select>", Pattern.DOTALL);
|
||||||
private static final Pattern P_ADDRESSES = Pattern.compile("<option.*?>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
private static final Pattern P_ADDRESSES = Pattern.compile("<option[^>]*>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
||||||
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
|
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
|
||||||
.compile("(keine Verbindung gefunden werden)|(liegt nach dem Ende der Fahrplanperiode|liegt vor Beginn der Fahrplanperiode)");
|
.compile("(keine Verbindung gefunden werden)|(liegt nach dem Ende der Fahrplanperiode|liegt vor Beginn der Fahrplanperiode)");
|
||||||
|
|
||||||
|
@ -182,10 +182,10 @@ public class OebbProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Pattern P_CONNECTIONS_FORM_ACTION = Pattern.compile("" //
|
private static final Pattern P_CONNECTIONS_FORM_ACTION = Pattern.compile("" //
|
||||||
+ "<form name=\"tp_results_form\" action=\"(http://fahrplan.oebb.at/bin/query.exe/.*?)#.*?>" // action
|
+ "<form name=\"tp_results_form\" action=\"(http://fahrplan.oebb.at/bin/query.exe/.*?)#[^>]*>" // action
|
||||||
, Pattern.DOTALL);
|
, Pattern.DOTALL);
|
||||||
private static final Pattern P_CONNECTIONS_PAGE = Pattern.compile(".*?" //
|
private static final Pattern P_CONNECTIONS_PAGE = Pattern.compile(".*?" //
|
||||||
+ "<form name=\"tp_results_form\" action=\"(http://fahrplan.oebb.at/bin/query.exe/.*?)#.*?>.*?" // action
|
+ "<form name=\"tp_results_form\" action=\"(http://fahrplan.oebb.at/bin/query.exe/.*?)#[^>]*>.*?" // action
|
||||||
+ "<table class=\"hafasResult\" cellspacing=\"0\" summary=\"Ihre Anfrage\">\n(.*?)\n</table>.*?" // header
|
+ "<table class=\"hafasResult\" cellspacing=\"0\" summary=\"Ihre Anfrage\">\n(.*?)\n</table>.*?" // header
|
||||||
+ "<table cellspacing=\"0\" class=\"hafasResult\" style=\"width:100%;\" summary=\"Verbindungen Übersicht\">\n" //
|
+ "<table cellspacing=\"0\" class=\"hafasResult\" style=\"width:100%;\" summary=\"Verbindungen Übersicht\">\n" //
|
||||||
+ "(.*?<table cellspacing=\"0\">(.*?)</table>.*?)\n" // connections overview
|
+ "(.*?<table cellspacing=\"0\">(.*?)</table>.*?)\n" // connections overview
|
||||||
|
@ -204,7 +204,7 @@ public class OebbProvider implements NetworkProvider
|
||||||
private static final Pattern P_CONNECTIONS_COARSE = Pattern.compile("<tr class=\"(?:selected|tpOverview)\">\n(.*?)</tr>", Pattern.DOTALL);
|
private static final Pattern P_CONNECTIONS_COARSE = Pattern.compile("<tr class=\"(?:selected|tpOverview)\">\n(.*?)</tr>", Pattern.DOTALL);
|
||||||
private static final Pattern P_CONNECTIONS_FINE = Pattern.compile(".*?" //
|
private static final Pattern P_CONNECTIONS_FINE = Pattern.compile(".*?" //
|
||||||
+ "name=\"guiVCtrl_connection_detailsOut_select_([\\w-]+)\".*?" // id
|
+ "name=\"guiVCtrl_connection_detailsOut_select_([\\w-]+)\".*?" // id
|
||||||
+ "<td headers=\"hafasOVDate\".*?>(\\d{2}\\.\\d{2}\\.\\d{2})" // departureDate
|
+ "<td headers=\"hafasOVDate\"[^>]*>(\\d{2}\\.\\d{2}\\.\\d{2})" // departureDate
|
||||||
+ "(?:<br />(\\d{2}\\.\\d{2}\\.\\d{2}))?.*?" // arrivalDate
|
+ "(?:<br />(\\d{2}\\.\\d{2}\\.\\d{2}))?.*?" // arrivalDate
|
||||||
+ "<td class=\"sepline\">(\\d{1,2}:\\d{2})" // departureTime
|
+ "<td class=\"sepline\">(\\d{1,2}:\\d{2})" // departureTime
|
||||||
+ "<br />(\\d{1,2}:\\d{2}).*?" // arrivalTime
|
+ "<br />(\\d{1,2}:\\d{2}).*?" // arrivalTime
|
||||||
|
@ -215,20 +215,20 @@ public class OebbProvider implements NetworkProvider
|
||||||
private static final Pattern P_CONNECTION_DETAILS_COARSE = Pattern.compile("<tr class=\"tpDetails\">\n(.*?)\n</tr>\n" //
|
private static final Pattern P_CONNECTION_DETAILS_COARSE = Pattern.compile("<tr class=\"tpDetails\">\n(.*?)\n</tr>\n" //
|
||||||
+ "<tr class=\"tpDetails(?: special)?\">\n(.*?)\n</tr>\n<tr>\n(.*?)\n</tr>", Pattern.DOTALL);
|
+ "<tr class=\"tpDetails(?: special)?\">\n(.*?)\n</tr>\n<tr>\n(.*?)\n</tr>", Pattern.DOTALL);
|
||||||
private static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile(".*?" //
|
private static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile(".*?" //
|
||||||
+ "<td headers=\"hafasDTL\\d+_Stop\".*?>\n" //
|
+ "<td headers=\"hafasDTL\\d+_Stop\"[^>]*>\n" //
|
||||||
+ "(?:<a href=\"http://fahrplan\\.oebb\\.at/bin/stboard\\.exe/dn.*?input=.*?%23(\\d+)&.*?>)?" // departureId
|
+ "(?:<a href=\"http://fahrplan\\.oebb\\.at/bin/stboard\\.exe/dn.*?input=.*?%23(\\d+)&[^>]*>)?" // departureId
|
||||||
+ "([^\n<]*).*?" // departure
|
+ "([^\n<]*).*?" // departure
|
||||||
+ "<td headers=\"hafasDTL\\d+_Date\".*?>\n(?:(\\d{2}\\.\\d{2}\\.\\d{2})| )\n</td>.*?" // departureDate
|
+ "<td headers=\"hafasDTL\\d+_Date\"[^>]*>\n(?:(\\d{2}\\.\\d{2}\\.\\d{2})| )\n</td>.*?" // departureDate
|
||||||
+ "<td headers=\"hafasDTL\\d+_TimeDep\".*?>(?:(\\d{2}:\\d{2})| )</td>.*?" // departureTime
|
+ "<td headers=\"hafasDTL\\d+_TimeDep\"[^>]*>(?:(\\d{2}:\\d{2})| )</td>.*?" // departureTime
|
||||||
+ "<td headers=\"hafasDTL\\d+_Platform\".*?>\\s*(?: |(.*?))\\s*</td>.*?" // departurePosition
|
+ "<td headers=\"hafasDTL\\d+_Platform\"[^>]*>\\s*(?: |(.*?))\\s*</td>.*?" // departurePosition
|
||||||
+ "<img src=\"/img/vs_oebb/(\\w+?)_pic.gif\".*?" // lineType
|
+ "<img src=\"/img/vs_oebb/(\\w+?)_pic.gif\".*?" // lineType
|
||||||
+ "(?:<a href=\"http://fahrplan\\.oebb\\.at/bin/traininfo\\.exe/dn.*?>(.*?)</a>.*?)?" // line
|
+ "(?:<a href=\"http://fahrplan\\.oebb\\.at/bin/traininfo\\.exe/dn[^>]*>(.*?)</a>.*?)?" // line
|
||||||
+ "<td headers=\"hafasDTL\\d+_Stop\".*?>\n" //
|
+ "<td headers=\"hafasDTL\\d+_Stop\"[^>]*>\n" //
|
||||||
+ "(?:<a href=\"http://fahrplan\\.oebb\\.at/bin/stboard\\.exe/dn.*?input=.*?%23(\\d+)&.*?>)?" // arrivalId
|
+ "(?:<a href=\"http://fahrplan\\.oebb\\.at/bin/stboard\\.exe/dn.*?input=.*?%23(\\d+)&[^>]*>)?" // arrivalId
|
||||||
+ "([^\n<]*).*?" // arrival
|
+ "([^\n<]*).*?" // arrival
|
||||||
+ "<td headers=\"hafasDTL\\d+_Date\".*?>\n(?:(\\d{2}\\.\\d{2}\\.\\d{2})| )\n</td>.*?" // arrivalDate
|
+ "<td headers=\"hafasDTL\\d+_Date\"[^>]*>\n(?:(\\d{2}\\.\\d{2}\\.\\d{2})| )\n</td>.*?" // arrivalDate
|
||||||
+ "<td headers=\"hafasDTL\\d+_TimeDep\".*?>(?:(\\d{2}:\\d{2})| )</td>.*?" // arrivalTime
|
+ "<td headers=\"hafasDTL\\d+_TimeDep\"[^>]*>(?:(\\d{2}:\\d{2})| )</td>.*?" // arrivalTime
|
||||||
+ "<td headers=\"hafasDTL\\d+_Platform\".*?>\\s*(?: |(.*?))\\s*</td>.*?" // arrivalPosition
|
+ "<td headers=\"hafasDTL\\d+_Platform\"[^>]*>\\s*(?: |(.*?))\\s*</td>.*?" // arrivalPosition
|
||||||
+ "(?:ca\\. (\\d+) Min\\.\n.*?)?" // min
|
+ "(?:ca\\. (\\d+) Min\\.\n.*?)?" // min
|
||||||
, Pattern.DOTALL);
|
, Pattern.DOTALL);
|
||||||
|
|
||||||
|
@ -404,8 +404,8 @@ public class OebbProvider implements NetworkProvider
|
||||||
|
|
||||||
private static final Pattern P_DEPARTURES_HEAD_COARSE = Pattern.compile(".*?" //
|
private static final Pattern P_DEPARTURES_HEAD_COARSE = Pattern.compile(".*?" //
|
||||||
+ "(?:" //
|
+ "(?:" //
|
||||||
+ "<table class=\"hafasResult\".*?>(.+?)</table>.*?" //
|
+ "<table class=\"hafasResult\"[^>]*>(.+?)</table>.*?" //
|
||||||
+ "(?:<table cellspacing=\"0\" class=\"hafasResult\".*?>(.+?)</table>|(verkehren an dieser Haltestelle keine))"//
|
+ "(?:<table cellspacing=\"0\" class=\"hafasResult\"[^>]*>(.+?)</table>|(verkehren an dieser Haltestelle keine))"//
|
||||||
+ "|(Eingabe kann nicht interpretiert)|(Verbindung zum Server konnte leider nicht hergestellt werden))" //
|
+ "|(Eingabe kann nicht interpretiert)|(Verbindung zum Server konnte leider nicht hergestellt werden))" //
|
||||||
+ ".*?" //
|
+ ".*?" //
|
||||||
, Pattern.DOTALL);
|
, Pattern.DOTALL);
|
||||||
|
|
|
@ -465,7 +465,7 @@ public class RmvProvider implements NetworkProvider
|
||||||
+ "(?:<span class=\"red\">heute (Gl\\. " + ParserUtils.P_PLATFORM + ")</span><br />\n)?" // predictedPosition
|
+ "(?:<span class=\"red\">heute (Gl\\. " + ParserUtils.P_PLATFORM + ")</span><br />\n)?" // predictedPosition
|
||||||
+ "(?:(Gl\\. " + ParserUtils.P_PLATFORM + ")<br />\n)?" // position
|
+ "(?:(Gl\\. " + ParserUtils.P_PLATFORM + ")<br />\n)?" // position
|
||||||
+ "(?:<span class=\"red\">([^>]*)</span>\n)?" // message
|
+ "(?:<span class=\"red\">([^>]*)</span>\n)?" // message
|
||||||
+ "(?:<img src=\".+?\" alt=\"\" />\n<b>.+?</b>\n<br />\n)*" // (messages)
|
+ "(?:<img src=\".+?\" alt=\"\" />\n<b>[^<]*</b>\n<br />\n)*" // (messages)
|
||||||
, Pattern.DOTALL);
|
, Pattern.DOTALL);
|
||||||
|
|
||||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||||
|
|
|
@ -134,8 +134,8 @@ public class SbbProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Pattern P_PRE_ADDRESS = Pattern.compile(
|
private static final Pattern P_PRE_ADDRESS = Pattern.compile(
|
||||||
"<select name=\"(REQ0JourneyStopsS0K|REQ0JourneyStopsZ0K|REQ0JourneyStops1\\.0K)\" accesskey=\"f\".*?>(.*?)</select>", Pattern.DOTALL);
|
"<select name=\"(REQ0JourneyStopsS0K|REQ0JourneyStopsZ0K|REQ0JourneyStops1\\.0K)\" accesskey=\"f\"[^>]*>(.*?)</select>", Pattern.DOTALL);
|
||||||
private static final Pattern P_ADDRESSES = Pattern.compile("<option.*?>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
private static final Pattern P_ADDRESSES = Pattern.compile("<option[^>]*>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
||||||
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
|
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
|
||||||
.compile("(mehrfach vorhanden oder identisch)|(keine Verbindung gefunden werden)|(liegt nach dem Ende der Fahrplanperiode|liegt vor Beginn der Fahrplanperiode)");
|
.compile("(mehrfach vorhanden oder identisch)|(keine Verbindung gefunden werden)|(liegt nach dem Ende der Fahrplanperiode|liegt vor Beginn der Fahrplanperiode)");
|
||||||
|
|
||||||
|
@ -221,16 +221,16 @@ public class SbbProvider implements NetworkProvider
|
||||||
+ "<tr>(.*?class=\"stop-station-icon last\".*?)</tr>", Pattern.DOTALL);
|
+ "<tr>(.*?class=\"stop-station-icon last\".*?)</tr>", Pattern.DOTALL);
|
||||||
static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile(".*?" //
|
static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile(".*?" //
|
||||||
+ "<td headers=\"stops-\\d+\" class=\"stop-station\">\n" //
|
+ "<td headers=\"stops-\\d+\" class=\"stop-station\">\n" //
|
||||||
+ "(?:<a href=\"http://fahrplan\\.sbb\\.ch/bin/bhftafel\\.exe/dn.*?input=(\\d+)&.*?>)?" // departureId
|
+ "(?:<a href=\"http://fahrplan\\.sbb\\.ch/bin/bhftafel\\.exe/dn.*?input=(\\d+)&[^>]*>)?" // departureId
|
||||||
+ "([^\n<]*?)<.*?" // departure
|
+ "([^\n<]*?)<.*?" // departure
|
||||||
+ "<td headers=\"date-\\d+\"[^>]*>\n(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n)?</td>.*?" // departureDate
|
+ "<td headers=\"date-\\d+\"[^>]*>\n(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n)?</td>.*?" // departureDate
|
||||||
+ "<td headers=\"time-\\d+\"[^>]*>(?:(\\d{2}:\\d{2})| )</td>.*?" // departureTime
|
+ "<td headers=\"time-\\d+\"[^>]*>(?:(\\d{2}:\\d{2})| )</td>.*?" // departureTime
|
||||||
+ "<td headers=\"platform-\\d+\"[^>]*>\n(?:<span[^>]*>\n)?(.+?)?\\s*(?:<img[^>]*>\n</span>\n)?</td>.*?" // departurePosition
|
+ "<td headers=\"platform-\\d+\"[^>]*>\n(?:<span[^>]*>\n)?(.+?)?\\s*(?:<img[^>]*>\n</span>\n)?</td>.*?" // departurePosition
|
||||||
+ "<img src=\"/img/2/products/(\\w+?)_pic.gif\".*?" // lineType
|
+ "<img src=\"/img/2/products/(\\w+?)_pic.gif\".*?" // lineType
|
||||||
+ "(?:<a href=\"http://fahrplan\\.sbb\\.ch/bin/traininfo\\.exe/dn.*?>\\s*(.*?)\\s*</a>|" // line
|
+ "(?:<a href=\"http://fahrplan\\.sbb\\.ch/bin/traininfo\\.exe/dn[^>]*>\\s*(.*?)\\s*</a>|" // line
|
||||||
+ "\n(\\d+) Min\\.).*?" // min
|
+ "\n(\\d+) Min\\.).*?" // min
|
||||||
+ "<td headers=\"stops-\\d+\" class=\"stop-station last\">\n" //
|
+ "<td headers=\"stops-\\d+\" class=\"stop-station last\">\n" //
|
||||||
+ "(?:<a href=\"http://fahrplan\\.sbb\\.ch/bin/bhftafel\\.exe/dn.*?input=(\\d+)&.*?>)?" // arrivalId
|
+ "(?:<a href=\"http://fahrplan\\.sbb\\.ch/bin/bhftafel\\.exe/dn.*?input=(\\d+)&[^>]*>)?" // arrivalId
|
||||||
+ "([^\n<]*?)<.*?" // arrival
|
+ "([^\n<]*?)<.*?" // arrival
|
||||||
+ "<td headers=\"date-\\d+\"[^>]*>\n(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n)?</td>.*?" // arrivalDate
|
+ "<td headers=\"date-\\d+\"[^>]*>\n(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n)?</td>.*?" // arrivalDate
|
||||||
+ "<td headers=\"time-\\d+\"[^>]*>(?:(\\d{2}:\\d{2})| )</td>.*?" // arrivalTime
|
+ "<td headers=\"time-\\d+\"[^>]*>(?:(\\d{2}:\\d{2})| )</td>.*?" // arrivalTime
|
||||||
|
|
|
@ -237,7 +237,7 @@ public final class VbbProvider implements NetworkProvider
|
||||||
return (int) (value * 1000000);
|
return (int) (value * 1000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Pattern P_CHECK_ADDRESS = Pattern.compile("<option.*?>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
private static final Pattern P_CHECK_ADDRESS = Pattern.compile("<option[^>]*>\\s*(.*?)\\s*</option>", Pattern.DOTALL);
|
||||||
private static final Pattern P_CHECK_FROM = Pattern.compile("Von:");
|
private static final Pattern P_CHECK_FROM = Pattern.compile("Von:");
|
||||||
private static final Pattern P_CHECK_TO = Pattern.compile("Nach:");
|
private static final Pattern P_CHECK_TO = Pattern.compile("Nach:");
|
||||||
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
|
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
|
||||||
|
@ -527,7 +527,7 @@ public final class VbbProvider implements NetworkProvider
|
||||||
+ "<td><strong>(\\d{1,2}:\\d{2})</strong></td>.*?" // time
|
+ "<td><strong>(\\d{1,2}:\\d{2})</strong></td>.*?" // time
|
||||||
+ "<strong>\\s*(.*?)[\\s\\*]*</strong>.*?" // line
|
+ "<strong>\\s*(.*?)[\\s\\*]*</strong>.*?" // line
|
||||||
+ "(?:\\((Gl\\. " + ParserUtils.P_PLATFORM + ")\\).*?)?" // position
|
+ "(?:\\((Gl\\. " + ParserUtils.P_PLATFORM + ")\\).*?)?" // position
|
||||||
+ "<a href=\"/Fahrinfo/bin/stboard\\.bin/dox/dox.*?evaId=(\\d+)&.*?>" // destinationId
|
+ "<a href=\"/Fahrinfo/bin/stboard\\.bin/dox/dox.*?evaId=(\\d+)&[^>]*>" // destinationId
|
||||||
+ "\\s*(.*?)\\s*</a>.*?" // destination
|
+ "\\s*(.*?)\\s*</a>.*?" // destination
|
||||||
, Pattern.DOTALL);
|
, Pattern.DOTALL);
|
||||||
private static final Pattern P_DEPARTURES_SERVICE_DOWN = Pattern.compile("Wartungsarbeiten");
|
private static final Pattern P_DEPARTURES_SERVICE_DOWN = Pattern.compile("Wartungsarbeiten");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue