Regex pour filtrer l’URL entre la première et la deuxième barres obliques facultatives

J’essaie de construire une expression régulière pour filtrer une URL.

J’ai besoin d’une expression régulière pour correspondre aux cas suivants:

http://proxy/www.test.com Je veux que le résultat soit www.test.com

http://proxy/www.test.com/test Je veux que le résultat soit www.test.com

http://proxy/test.org/test Je veux que le résultat soit test.org

http://proxy/app.local-test:5555/test Je veux que le résultat soit app.local-test: 5555

http://proxy/local-test:5555/test Je veux que le résultat soit un test local: 5555

J’ai eu cette regex: (?<=proxy\/)(.*)(?=\/) Qui filtre l’url correctement, mais dépend d’une seconde barre oblique. La deuxième barre oblique est facultative, donc ma regex ne fait pas l’affaire.

Vous devez remplacer la correspondance de points gourmande par une classe de caractères négative :

 (?<=proxy\/)[^\/]+ 

Voir la démo

Le .* Est "gourmand" (ce qui signifie qu’il peut correspondre à autant de caractères que le retour à la ligne) et vous avez tenté de restreindre la correspondance avec l’avance. En fait, une classe de caractères négative est plus sûre et plus efficace.

Le [^/] signifie simplement n'importe quel caractère sauf un / . Ainsi, vous pouvez omettre complètement le look-ahead.

Essayez ceci: (?<=proxy\/)([^\/]+)

J’aime utiliser des comparatifs négatifs à la fin des phrases

Vous pouvez essayer avec:

(?<=proxy\/)([^\s\/]+)