Regexp::Common is useful for patterns like dotted decimal IPv4 addresses. The following gives you the leftmost such address. If you want to be sure to get the address between the parentheses, use literal parens as positive lookaround anchors.
Win8 Strawberry 5.30.3.1 (64) Wed 06/29/2022 21:31:05 C:\@Work\Perl\monks >perl use strict; use warnings; use Regexp::Common qw(net); my $ip = 'csteppfw pts/0 2022-06-27 15:53 (192.168.5.100)'; ($ip) = $ip =~ m{ (?<! \d) $RE{net}{IPv4} (?! \d) }xmsg; print "'$ip' \n"; ^Z '192.168.5.100'
Update: If for some reason you want to roll your own IPv4 regex ("I can't download modules!" — but see Yes, even you can use CPAN):
Win8 Strawberry 5.8.9.5 (32) Wed 06/29/2022 23:13:52 C:\@Work\Perl\monks >perl use strict; use warnings; # same as $RE{net}{IPv4} dotted decimal my $octet = qr{ 25 [0-5] | 2 [0-4] \d | [01]? \d \d? }xms; my $rx_ipv4 = qr{ (?> $octet (?: [.] $octet){3}) }xms; my $ip = 'csteppfw pts/0 2022-06-27 15:53 (192.168.5.100)'; ($ip) = $ip =~ m{ (?<! \d) $rx_ipv4 (?! \d) }xmsg; print "'$ip' \n"; ^Z '192.168.5.100'
Give a man a fish: <%-{-{-{-<
In reply to Re: This should be simple (updated)
by AnomalousMonk
in thread This should be simple
by steppnav
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |