2016-04-22 27 views
1

ich für ein RegexMuster suchen die folgenden entsprechen -Regex für URL mit optional endend/

https://www.example.org 
https://www.example.org/abc 

, wenn die Zeichenfolge ein nachlauf / hat, Muster sollte es ignorieren und es nicht zu dem Spiel hinzuzufügen. Wenn Abfrageparameter vorhanden sind, sollte die Zeichenfolge unverändert zurückgegeben werden.

Ich versuchte^(. *) (: /?)? $ Aber die nachgestellten nicht ignoriert '/'

+0

Was haben Sie versucht und wie genau hat es nicht funktioniert? Wo benutzt du die Regex? –

+0

Können Sie uns zeigen, was Sie versucht haben? – Charly

+0

Angenommen, Sie haben nur eine URL (nicht versuchen, es aus anderem Text zu extrahieren), können Sie es scheitern lassen, wenn es ein abschließendes '/' mit diesem Regex hat: '(?!. * \/$). *' – Druzion

Antwort

1

In Ihrem Fall "ignorieren" „nicht übereinstimmen, wenn ein Schrägstrich scheint zu bedeuten, gefunden".

Sie können eine gleichwertige Version mit einem negativen Lookahead verwenden:

^(?!.*/$)(.*)$ 

Siehe regex demo

Das Muster passt:

  • ^ - Beginn der Zeichenfolge
  • (?!.*/$) - Check wenn die Zeichenfolge nicht mit / endet und wenn ja, scheitern, das Spiel
  • (.*) - Spiel und erfassen in Gruppe 1 ({R:1}) die gesamte Zeichenfolge
  • $ - Ende der Zeichenfolge.
+0

Wenn ich die obigen Muster im IIS-Rewrite-Modul ausprobiere, erhalte ich einen Fehler - Der Ausdruck enthält ein wiederholbares Zeichen - *, +, .. nicht davor Ein Ausdruck. Dies funktioniert jedoch in Regex101 gut. – Bharath

+0

Also, es ist ein .NET-Modul? Verwenden Sie die Atomgruppe: '^ (?>. +) (? . +) (?

+0

^(?>. +) (? . +) (? Bharath