Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8295[/thread]

regulärer Ausdruck funktioniert nicht

Leser: 1


<< >> 7 Einträge, 1 Seite
Gast Gast
 2006-09-05 18:02
#69519 #69519
Hallo,

hier ist mein Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/local/bin/perl -w
use strict;

open (FILE_MAKE_ERR, "make.err");

while(my $line = <FILE_MAKE_ERR>)
{
  if($line =~ /(ERROR|error)/ && $line !~ /errors/)
  {
      $line =~ / (ERROR|error)\s+in\s+(\w+)\s+/;
      $line = $2;
      print "$line\n";
  }
}


Das Programm sucht aus der Datei die Zeilen aus die so aussehen:

ERROR in freeware/lib/lib_nt.mak (lib). See /net/test.i18Global/file.err

Nun müsste doch in der Variable $2, der fettmarkierte String drin stehen. Das scheint hier aber nicht der Fall zu sein.
Stattdessen wird mir hier ein leerer String zurückgegeben.

Könnt ihr mir weiterhelfen?
vayu
 2006-09-05 18:08
#69520 #69520
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
registrier dich mal, dann kannst du auch auf themen antworten :)

oder funktioniert das registrieren immer noch nicht.
frodus
 2006-09-05 18:39
#69521 #69521
User since
2003-09-26
147 Artikel
BenutzerIn
[default_avatar]
Hi,

Vielleicht so?

Code: (dl )
$line =~ /(ERROR|error)\s+in\s+([\w\/]+)\s+/;


Da war glaube ich ein Space zuviel. Und ich bin mir nicht sicher ob \w
auch / erlaubt oder nicht.

/Frodus\n\n

<!--EDIT|frodus|1157467580-->
Linuxer
 2006-09-05 19:03
#69522 #69522
User since
2006-01-27
3870 Artikel
HausmeisterIn

user image
\w enthaelt kein /

\w entspricht [a-zA-Z0-9_]
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
renee
 2006-09-06 10:12
#69523 #69523
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Warum eigentlich mehrere Reguläre Ausdrücke und das if?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/local/bin/perl

use strict;
use warnings;

open (FILE_MAKE_ERR,'<', "make.err") or die $!;

while(my $line = <FILE_MAKE_ERR>)
if(my ($test) = $line =~ /(?i:error)\s+in\s+([^\s]+)/){
print $test,"\n";
}
}

close FILE_MAKE_ERR;


Inhalt der Datei:
Code: (dl )
1
2
3
ERROR in freeware/lib/lib_nt.mak (lib). See /net/test.i18Global/file.err
error in test/path/test.mak (lib)
test error


Ausgabe:
Code: (dl )
1
2
3
123> perl regex.pl 
freeware/lib/lib_nt.mak
test/path/test.mak
\n\n

<!--EDIT|renee|1157523470-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2006-09-06 16:12
#69524 #69524
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
und für das "nicht errors" würd ich

Code: (dl )
/(?i:error(?!s))\s+in\s+([^\s]+)/


vorschlagen
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2006-09-06 16:30
#69525 #69525
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
stimmt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 7 Einträge, 1 Seite



View all threads created 2006-09-05 18:02.