Thread regex match: mehrere ausdrücke in EINER Zeile (4 answers)
Opened by maxmaster69 at 2007-06-23 22:07

bloonix
 2007-06-24 00:46
#77767 #77767
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=maxmaster69,23.06.2007, 20:07]kann mir jemand verraten, wie ich mehrere ausdrücke (unabhängig von der anzahl!!!) pro zeile mit dem gleichen suchmuster finden und speichern kann[/quote]
Ja, mit /g.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use warnings;

my @strings = (
  '<a href="http://.../1.zip">1</a><a href="http://.../2.zip">2</a>',
  '<a href="http://.../3.zip">3</a><a href="http://.../4.zip">4</a>',
  '<a href="http://.../5.zip">5</a><a href="http://.../6.zip">6</a>',
  '<a href="http://.../7.zip">7</a><a href="http://.../8.zip">8</a>',
  '<a href="http://.../9.zip">9</a><a href="http://.../10.zip">10</a>',
);

foreach my $line (@strings) {
  foreach my $zip ( $line =~ m|href="(http.+?\.zip)"|g ) {
     print $zip, "\n";
  }
}


Ausgabe:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
http://.../1.zip
http://.../2.zip
http://.../3.zip
http://.../4.zip
http://.../5.zip
http://.../6.zip
http://.../7.zip
http://.../8.zip
http://.../9.zip
http://.../10.zip


Ausserdem ist \d+.\d+.\d+.\d+ nicht die passende Regex um
IP-Adresssen zu matchen.

Das müsste ungefähr so aussehen:
Code: (dl )
1
2
my $octet   = q/(?: 25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})/;
my $ipaddr  = qr/^$octet\.$octet\.$octet\.$octet\z/x;
\n\n

<!--EDIT|opi|1182636684-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread regex match: mehrere ausdrücke in EINER Zeile