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

Negation von regulären Ausdrücken



<< >> 4 Einträge, 1 Seite
Updecrator
 2005-12-19 06:55
#61094 #61094
User since
2005-11-16
17 Artikel
BenutzerIn
[default_avatar]
Hallo, Zusammen,

Ich würde eine Substitution über ein negiertes Muster durchführen,
z.B. $line = " OK'#OKP=OKOK''?OK "

Ich möchte all Zeichen, die nicht geleich 'OK' sind, als 'X' codieren:

Das Ergebnis sollte so aussehen:
$line = " OKXXOKXXOKOKXXOK "

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
sub convert {

   my $line = shift;
   my $legal_chars = 'O|K';

# wie negiere ich '$legal_chars' ??? ###
   $line =~ s/ ??? $legal_chars/X/g;
########################
   return $line;

}


Vielen Dank im Voraus & Viel Gruss !
renee
 2005-12-19 07:28
#61095 #61095
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Willst Du einzelne Zeichen negieren, oder Worte?

Wenn Du die Buchstaben O und K als Positivliste ansiehst, dann so:
Code: (dl )
$line =~ s/[^KO]/X/g;
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/
Updecrator
 2005-12-19 09:37
#61096 #61096
User since
2005-11-16
17 Artikel
BenutzerIn
[default_avatar]
Hallo, renee,

Vielen Dank für die Hilfe,
ja, als einzelne Zeichen:
Code: (dl )
1
2
3
4
5
6
7
8
sub convert {

   my $line = shift;
   my $legal_chars = 'OK';
   $line =~ s/ [^$legal_chars]/X/g;
   return $line;

}

Das wäre alles, viel Gruss !
Dubu
 2005-12-19 11:09
#61097 #61097
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Wenn es um einzelne Zeichen geht, dann ist tr/// aber schneller und einfacher:
Code: (dl )
$line =~ tr/ OK/X/c;  # alles ausser Leerzeichen, "O" und "K" umwandeln in "X"
<< >> 4 Einträge, 1 Seite



View all threads created 2005-12-19 06:55.