Schrift
[thread]8069[/thread]

unless-Funktion/ Fehler im RegEx?



<< >> 5 Einträge, 1 Seite
Gast Gast
 2006-06-08 21:00
#67130 #67130
Hallo,

ich habe hier ein Stückchen Code. Zentral ist die unless-Funktion:
Wenn $element (übrigens ein Wort, das mit einem Großbuchstaben beginnt) nicht in komplett klein geschriebener Form nochmals im $data auftaucht, dann soll es in einen Array gepusht werden

Code: (dl )
1
2
3
4
5
6
7
8
foreach my $element (@help) {              &nbsp
;
unless($data =~ /lc($element)/) {
push @more_candidates, $element;
} &nbsp
;

}


Nun klappt das leider nicht; es werden auch solche $element gepusht, die durch unless eigentlich ignoriert weren sollten. Was kann ich ändern? Oder ist mein Weg total falsch? Das Problem ist etwas sehr fortgeschritten für mich, aber ich muss halt prüfen, ob ein groß geschriebenes Wort nochmal in klein geschriebener form in einem Text (hier $data) vorkommt.

Vielen Dank, Oli
renee
 2006-06-08 21:20
#67131 #67131
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
foreach my $element (@help) {               
if($data !~ /lc($element)/e) {
push @more_candidates, $element;
}
}
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/
Strat
 2006-06-08 21:28
#67132 #67132
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
lc($element) erkennt er innerhalb der RE nicht als funktion.
Code: (dl )
1
2
3
4
  my $elem = lc($element);
unless( $data =~ /\Q$elem\E/ ) {
push( @more_candidates, $element );
}

oder teste mal:
Code: (dl )
1
2
unless( $data =~ /\L$elem/ ) {
...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pq
 2006-06-08 21:50
#67133 #67133
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=renee,08.06.2006, 19:20]
Code: (dl )
1
2
3
4
5
foreach my $element (@help) {               
       if($data !~ /lc($element)/e) {
           push @more_candidates, $element;
       }      
}
[/quote]
ähm, die regex an sich kennt keinen e-modifier, der ist nur für
substitutions gedacht.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
renee
 2006-06-09 11:15
#67134 #67134
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
oh, da hat mein Siebhirn wieder zugeschlagen...
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/
<< >> 5 Einträge, 1 Seite



View all threads created 2006-06-08 21:00.