searching for a pattern for multiple matches

J

jhu

Can anyone tell me using Perl how to find all matching patterns. So if
I have this one big string of say a html web page which contains
multiple IP's and my pattern which is \d{1,3}\.\d{1,3}\.\d{1,3}\.
\d{1,3} then how do I go about setting up my code in some sort of
while loop to find all instances of matches ? Also can someone in
simple terms explain what a back reference is ? Is it simply the
pattern found ?

Thanks in advance
 
B

Ben Morrow

Quoth jhu said:
Can anyone tell me using Perl how to find all matching patterns. So if
I have this one big string of say a html web page which contains
multiple IP's and my pattern which is \d{1,3}\.\d{1,3}\.\d{1,3}\.
\d{1,3} then how do I go about setting up my code in some sort of
while loop to find all instances of matches ?

Use the /g modifier. See 'Regexp Quote-Like Operators' in perldoc
perlop, particularly the section starting "In scalar context, each
execution of "m//g...".
Also can someone in
simple terms explain what a back reference is ? Is it simply the
pattern found ?

perldoc perlretut

Ben
 
J

jhu

Use the /g modifier. See 'Regexp Quote-Like Operators' in perldoc
perlop, particularly the section starting "In scalar context, each
execution of "m//g...".


perldoc perlretut

Ben

Ben thanks but I'm not on Unix or Linux but rather on Windows and
MV6.0.
 
B

Ben Morrow

Quoth jhu said:
Ben thanks but I'm not on Unix or Linux but rather on Windows and
MV6.0.

Huh? What difference does that make? Do you mean you can't find the
perldocs? perldoc works perfectly well on Win32, or ActivePerl installs
a nice HTMLified version in c:\perl\html.

If you mean 'I'm not actually using Perl, but some other system that
provides Perlish regexen' then: sorry, go ask somewhere else. This
newsgroup is for discussing Perl.

Ben
 
D

Dr.Ruud

jhu schreef:
Can anyone tell me using Perl how to find all matching patterns. So if
I have this one big string of say a html web page which contains
multiple IP's and my pattern which is \d{1,3}\.\d{1,3}\.\d{1,3}\.
\d{1,3} then how do I go about setting up my code in some sort of
while loop to find all instances of matches ?


#!/usr/bin/perl
use strict;
use warnings;

use Regexp::Common;

local $\ = "\n";

(my $big_string = join "", <DATA>) =~ s/\s*\n\s*/ /g;

print $big_string;
print "-" x 40;

my @ips = $big_string =~ m/$RE{net}{IPv4}/g;

print for @ips;

__DATA__
abc 123.45.6.78 xyz
abc 234.45.68.91 xyz
abc 123.456.78.9 xyz
abc 1.2.3.4 xyz
abc 123.45.678 xyz
abc 234.45.68.910 xyz
abc 1.2.3.4 xyz


See also:
http://search.cpan.org/~abigail/Regexp-Common/lib/Regexp/Common/net.pm

Also can someone in
simple terms explain what a back reference is ? Is it simply the
pattern found ?

A backreference is a sub-pattern. (The word pattern is traditionally
reserved for the whole search pattern.)

With a backreference, you reuse something that is already found by an
earlier capture in the pattern:

m/ ([aeiou]) \1 /x; # two vowels, equal
m/ [aeiou]{2} /x; # two vowels, maybe equal


Now read both perlre and perlretut.

In perlre you'll find:
"Referring back to another part of the match is called a backreference."

In perlretut you'll find:
"Backreferences are simply matching variables that can be used inside a
regexp. This is a really nice feature - what matches
later in a regexp can depend on what matched earlier in the regexp."
 
J

jhu

Quoth jhu <[email protected]>:







Huh? What difference does that make? Do you mean you can't find the
perldocs? perldoc works perfectly well on Win32, or ActivePerl installs
a nice HTMLified version in c:\perl\html.

If you mean 'I'm not actually using Perl, but some other system that
provides Perlish regexen' then: sorry, go ask somewhere else. This
newsgroup is for discussing Perl.

Ben- Hide quoted text -

- Show quoted text -

Ok I did not understand that I can still view Perl docs online.
 
D

Dave Weaver

Ok I did not understand that I can still view Perl docs online.

You don't even have to be online.
Just bring up a command prompt window and use the "perldoc" command.
e.g.:

perldoc perl
perldoc perldoc

If you installed ActiveState's distribution, just go to your Start
Menu -> ActivePerl -> Documentation to get the HTML version.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top