2 votes

Regex pour obtenir le port de l'hôte avec plusieurs choix.

J'ai besoin d'obtenir le port d'url, J'utilise la méthode suivante qui fonctionne

https://regex101.com/r/yoBODY/1

(?:([^@]*)@)?(.\[.+\]|([^:]+))(?:[:](\d+))?

Je suis assez novice en matière de regex, Est-ce que j'ai raté quelque chose ?

Il s'agit des entrées et à partir de celles-ci, je dois obtenir les données suivantes port

test:222
https://aaa.com:333

https://www.aaa.com:333
aaa.bbb.cccc:8000

Je reçois un certain URI/URL avec le port

si cela vous convient, faites-le moi savoir

1voto

Wiktor Stribiżew Points 100073

Pour les chaînes utilisées comme chaînes autonomes, vous pouvez utiliser

^(?:https?:\/\/)?(?:([^@]*)@)?(\[[^][]+\]|([^:]+))(?::(\d+))?$

Si vous faites correspondre ces chaînes de caractères à des lignes d'un texte multiligne, il est conseillé d'ajouter l'option \n y \r aux classes de caractères niées pour éviter le débordement sur la ou les lignes suivantes :

^(?:https?:\/\/)?(?:([^@\r\n]*)@)?(\[[^][\r\n]+\]|([^:\r\n]+))(?::(\d+))?$

Voir le Démonstration de regex . Détails :

  • ^ - début de la chaîne
  • (?:https?:\/\/)? - une option http:// o https://
  • (?:([^@]*)@)? - une séquence facultative de zéro ou plus caractères autres que @ (capturé dans le groupe 1) et ensuite un @ char
  • (\[[^][]+\]|([^:]+)) - Groupe 2 : soit [ un ou plusieurs caractères autres que [ y ] et ensuite ] ou un ou plusieurs caractères autres que : capturé dans le groupe 3
  • (?::(\d+))? - une séquence facultative de : et un ou plusieurs chiffres saisis dans le groupe 4
  • $ - fin de la chaîne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X