Home > Archive > PERL Miscellaneous > November 2007 > searching for a pattern for multiple matches
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
searching for a pattern for multiple matches
|
|
|
| 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
| |
| Ben Morrow 2007-11-23, 10:07 pm |
|
Quoth jhu <jhu4399@yahoo.com>:
> 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
| |
|
| On Nov 23, 6:35 pm, Ben Morrow <b...@morrow.me.uk> wrote:
> Quoth jhu <jhu4...@yahoo.com>:
>
>
> 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.
| |
| Ben Morrow 2007-11-24, 4:19 am |
|
Quoth jhu <jhu4399@yahoo.com>:
> On Nov 23, 6:35 pm, Ben Morrow <b...@morrow.me.uk> wrote:
>
> 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
| |
| Dr.Ruud 2007-11-24, 8:04 am |
| 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/Reg...p/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."
--
Affijn, Ruud
"Gewoon is een tijger."
| |
|
| On Nov 23, 8:11 pm, Ben Morrow <b...@morrow.me.uk> wrote:
> Quoth jhu <jhu4...@yahoo.com>:
>
>
>
>
>
>
>
>
>
>
>
> 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.
| |
| Dave Weaver 2007-11-26, 8:07 am |
| On Sat, 24 Nov 2007 11:12:54 -0800 (PST), jhu <jhu4399@yahoo.com> wrote:
> 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.
|
|
|
|
|