2016-05-14 17 views
1

zu entsprechen Ich verwende diese Regex .*\?(a\=([0-9]{3,4})), um alle URLs mit der Abfragezeichenfolge zu finden? A = {{eine Zufallszahl hier}}. Es sollte nur eine Abfragezeichenfolge mit 3 oder 4 Ziffern übereinstimmen.Regex, um URL mit spezifischen Abfragezeichenfolgeparameter

http://www.test.com/test/test-test-test/?a=12 
http://www.test.com/test-test/news/?a=734 
http://www.test.com/test/?a=0987 
http://www.test.com/test/test-test-test/?a=90235 

Meine regex sollte die zweiten und dritten Verbindungen entsprechen, da sie eine Abfrage-String 3 oder 4 Ziffern enthalten.

Ich benutze dieses Werkzeug http://www.regexpal.com/ und bis jetzt, es markiert nur die zweite Verbindung.

Antwort

1

Versuchen Sie, diese Regex:

.+\/\?a=([0-9]{3,4})$ 
  • /.+\/\?a=([0-9]{3,4})$/gm
  • .+ jedes Zeichen (außer Newline)
  • Quantifier: + Zwischen einem und beliebig oft, so oft wie möglich, etwas zurückzugeben je nach Bedarf [ gierig]
  • \/ entspricht dem Zeichen/wörtlich
  • \? entspricht das Zeichen? buchstäblich
  • a= entspricht die Zeichen a = buchstäblich (Groß- und Kleinschreibung)
  • 1. einfangende Gruppe ([0-9]{3,4})
  • [0-9]{3,4} Spiel ein einzelnes Zeichen in der Liste unten Quantifier: {3,4} zwischen 3 und 4 mal, wie oft wie möglich, die zurück nach Bedarf [gierigen]
  • 0-9 ein einzelnes Zeichen im Bereich zwischen 0 und 9
  • $ assert Position am Ende einer Zeile

Sehen Sie es, hier zu arbeiten: https://regex101.com/r/sP0lR3/1

Und als visuelle Darstellung:

Regular expression visualization

Debuggex Demo

+1

Vielen Dank! Die visuelle Darstellung war auch sehr hilfreich. Ich werde die Debuggex-Demo überprüfen. – AlexisP