2017-01-12 1 views
-1

Ich versuche, die Basis Regex herauszufinden, um die Mitte einer Google URL aus einer SQL-Datenbank zu erfassen.Regex Capture Mitte der URL

Zum Beispiel ein paar Links:

https://www.google.com/cars/?year=2016&model=ausweichen + durango & id = 1234 https://www.google.com/cars/?year=2014&model=Jeep + cherokee + Crossover & id = 6789

Was würde Seien Sie der Regex, um den Text zu erfassen, um dodge + du zu erhalten Rango oder jeep + cherokee + crossover? (Es ist in Ordnung, dass die + sein noch drin.)

Meine Versuche:

1) \b[=.]\W\b\w{5}\b[+.]?\w{7} , aber das funktioniert offensichtlich nicht, da dies ein hart codierte Szenario ist, dass nur wie etwas für die funktionieren würde Dodge Durango Beispiel. (Würde extrahieren „ausweichen + durango)

2) Mit positiver Lookback,

[^+](?=&id) 

aber ich bin nicht ganz sicher, wie dies zu verwenden, da dies nur ein Zeichen hinter dem Symbol & packt.

Wie kann ich eine Reihe von (potentiell) beliebiger Länge mit jeder Menge + Trennzeichen zwischen dem „Modell =“ und „& id“ Grenzen?

+0

Bitte markieren Sie die von Ihnen verwendeten DBMS. –

+0

hinzugefügt als Rotverschiebung. Vielen Dank –

Antwort

0

extrahieren scheinen, wie Sie regexp_replace und Zugang Matte verwenden könnten CH-Gruppen:

regexp_replace(input, 'model=(.*?)([&\\s]|$)', E'\\1') 

von here:

Die REGEXP_REPLACE Funktion Substitution neuen Text sieht Teilstrings, die POSIX regulären Ausdruck Muster entsprechen. Es hat die Syntax regexp_replace (Quelle, Muster, Ersetzung [, Flags]). Die Quellzeichenfolge wird unverändert zurückgegeben, wenn keine Übereinstimmung mit dem Muster vorliegt. Wenn eine Übereinstimmung vorhanden ist, wird die Quellzeichenfolge mit der Ersetzungszeichenfolge zurückgegeben, die die übereinstimmende Teilzeichenfolge ersetzt. Die Ersatzzeichenfolge kann \ n enthält, wobei n 1 bis 9 ist, , um anzuzeigen, dass die Quelle des n-ten passenden Teilzeichen geklammert sollte subexpression des Musters eingesetzt werden kann, und es kann enthalten \ & dass die Teilkette, um anzuzeigen, passend zum gesamten Muster sollte eingefügt werden. Schreiben Sie \, wenn Sie einen literalen umgekehrten Schrägstrich in den Ersatztext einfügen müssen. Der flags-Parameter ist eine optionale Textzeichenfolge , die null oder mehrere aus einem Buchstaben bestehende Flags enthält, die das Verhalten der Funktion ändern.Flag i gibt Groß- und Kleinschreibung Matching, während Flag g gibt Ersatz jedes passende eher String als nur die erste

0

ich Missverständnis sein, aber wenn Sie das Modell erhalten möchten, wählen Sie einfach alles zwischen model= und das kaufmännische Und-Zeichen (&).

regexp_matches(input, 'model=([^&]*)') 
  • model=: Spiel buchstäblich
  • ([^&]*): Capture
    • [^&]*: Alles, was nicht ein kaufmännisches ist
      • *: unbegrenzt mal