Regex zum Parsen der queryString
Hallo bin auf der Suche nach einem Regulären Ausdruck, der analysiert, QueryString.Bin anhand der folgenden regex:
Pattern pr1=Pattern.compile("[\\?&](?<name>[^&=]+)=(?<value>[^&=]+)");
Aber seine werfen
java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 18
[\?&](?<name>[^&=]+)=(?<value>[^&=]+)
^
Kann mir jemand helfen auf
- Regex verwendet wird, ist"[\\?&](?<name>[^&=]+)=(\\?<Wert>[^&=]+)"
- Kann mir jemand helfen seine dringende
- Sind Sie sicher, dass Sie mit Java 7 / JDK 1.7? Weil es aussieht wie die regex-engine ist nicht die Anerkennung der benannten capture-Gruppe-notation.
- dies zu tun, ohne ein regex ist (denke ich) viel mehr klar und einfach.
- verwende jdk1.6
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, was Sie versuchen zu erreichen, mit
"%5b^&=%5d+">
. Wie es klingt, beschwerte sich über die>
. Dies kann helfen: http://stevenbenner.com/2010/03/javascript-regex-trick-parse-a-query-string-into-an-object/Java <1.7 unterstützt keine benannten Gruppen so ändern Sie Ihre regex zu:
dann aus den Matcher, Holen Sie sich Gruppe # 1 und # 2 für den Namen und Wert.
Update:
AUSGABE:
Lookbehind Ausdrücken suchen müssen, einen string fester Länge. Sie können nicht verwenden Sie die regex-features wie * ? + innen lookbehind-assertions.
(?<name>[^&=]+)
ist ein lookbehind gekennzeichnet durch '?< "und es enthält ein"+". Vielleicht wollte Sie kommentieren Sie die '<'?