Yes. That's fine as long as you know that the data being passed contains a
valid IP address. If the data may contain an invalid IP (e.g
999.999.999.999), your regex will still match it as an 'IP'. It all depends
on where your data is coming from and if you trust that source...
John
-----Original Message-----
From: George S Pereira [mailto:[EMAIL PROTECTED]]
Sent: 04 July 2001 11:46
To: John Edwards
Cc: 'Matija Papec'; Perl Beginners (E-mail)
Subject: Re: simple regexp
A simpler solution of checking for an IP address would be :
#! /opt/bin/perl -w
my($str) = 'This is a string with 192.19.2.13 in it';
while ($str =~ m/(\d+\.\d+\.\d+\.\d+)/g)
{
if (defined $1)
{
print "IP address is $1\n";
}
}
This just prints the IP address if there is one.
George Savio Pereira
^^^^^^^^^^^^^^^^^^^^
Email : [EMAIL PROTECTED]
On Wed, 4 Jul 2001, John Edwards wrote:
> Here's a solution I sent to the group earlier...
>
> For the array thing, have you considered using a hash instead?? How do you
> know where to insert the data in the array? Is it needed after another
> value, or at a certain element??
>
> John
>
> -----Original Message-----
> From: John Edwards
> Sent: 14 June 2001 16:29
> To: '[EMAIL PROTECTED]'; [EMAIL PROTECTED]
> Subject: RE: regex matching
>
>
>
>
> This will give you the IP only if valid. I've attached as a file too in
case
> the code gets mangled.
>
> ---
> $string = "here is a sample with 123.456.123.456 in the middle.";
>
> if ($string =~
>
/([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-
> 4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])/) {
>
> print "String <$string> contains a valid IP <$&>\n";
> } else {
> print "String <$string> contains no valid IP\n";
> }
>
> $string2 = "here is a sample with 123.156.123.156 in the middle.";
>
>
> if ($string2 =~
>
/([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-
> 4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])/) {
> print "String2 <$string2> contains a valid IP <$&>\n";
> } else {
> print "String2 <$string2> contains no valid IP\n";
> }
> ---
>
> John
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]
> Sent: 14 June 2001 16:12
> To: [EMAIL PROTECTED]
> Subject: regex matching
>
>
> i have a basic knowledge of regex but i want to know if there is a
> simpler way to pull patterns out of a line.
>
> if i have a line like:
>
> here is a sample with 123.456.123.456 in the middle.
>
> m/\d\.\d\.\d\.\d/ will match the entire line. is there an easy way to
> get only the ip address?
>
> thanks..
>
> Brian T. Wallace
> Engineer
>
>
>
> --------------------------Confidentiality--------------------------.
> This E-mail is confidential. It should not be read, copied, disclosed or
> used by any person other than the intended recipient. Unauthorised use,
> disclosure or copying by whatever medium is strictly prohibited and may be
> unlawful. If you have received this E-mail in error please contact the
> sender immediately and delete the E-mail from your system.
>
>
> <<test.zip>>
>
--------------------------Confidentiality--------------------------.
This E-mail is confidential. It should not be read, copied, disclosed or
used by any person other than the intended recipient. Unauthorised use,
disclosure or copying by whatever medium is strictly prohibited and may be
unlawful. If you have received this E-mail in error please contact the
sender immediately and delete the E-mail from your system.