This answer caters for usernames and passwords too:

/^(\w+):\/\/(?:([^:@\/]*)(?::([^@\/]+)|)\@|)((?:[a-zA-Z0-9]+\.|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9]\.)*(?:[a-zA-Z0-9]+|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9]))(?::(\d{1,5})|)(.*)/o

e.g.

#!perl use strict; use warnings; for my $uri( qw(https://www.example.de http://www.example.de https://example.de http://example.de www.example.de example.de:123 http://www.example.de:445/can?this=happen&too=1#lalala http://www.example.de/can?this=happen&too=1#foo http://www.example.de:445 wss://stream.binance.com:9443/stream?streams=xrpbtc@kl +ine_1m/ethbtc@kline_1m/btcusdt@kline_1m http://a:b@example.com:890/path/wah@t/foo.js?foo=bar&b +ingobang=&king=kong@kong.com#foobar/bing/bo@ng?bang" ftp://username@hostname/ ftp://username:password@hostname/ ) ) { print "in ($uri):\n"; my @parts=($uri=~/^(\w+):\/\/ # scheme (ftp http wss etc) (?:([^:@\/]*) # optional username (?::([^@\/]+)|) # optional password \@|) # username and password are op +tional ( # group all the bits of the UR +L and its dots (?:[a-zA-Z0-9]+\.|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA- +Z0-9]\.)*(?:[a-zA-Z0-9]+|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9]) ) (?::(\d{1,5})|) # optional port (.*)/xo); # path and query parms come la +st for(my $i=0;$i<=$#parts;$i++) { print " $i: $parts[$i]\n" if($parts +[$i]); } }

In reply to Re: Perl RegEx (url explode) by cnd
in thread Perl RegEx (url explode) by U_nix$_@

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.