• Keine Ergebnisse gefunden

Pattern matching

N/A
N/A
Protected

Academic year: 2022

Aktie "Pattern matching"

Copied!
22
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Pattern matching

Pattern matching

(2)

Konkatenation

”Hallo ”. ” ”. ”Welt”

$a.$b

”$a $b”

”The content of a is $a”

(3)

Substrings

substr( $str , 10, 15) # ab Pos. 10, L”ange 15 substr( $str , 10) # ab Pos. 10, bis Ende substr( $str , −10)# letzte 10 Zeichen

substr( $str , 0, 0) = ”Hallo”# an Anfang

substr( $str , 0, 1) = ”Hallo”# erstes Zeichen ersetzt substr( $str , −1) = ”Hallo”# letztes Zeichen ersetzt

chomp($str)# entfernt newlines am Ende

(4)

Regul¨ are Ausdr¨ ucke

\ Escape \n

| Alternative a|b ( ) Gruppierung (a|b)c

− Bereiche A−Za−z

[ ] Zeichenklasse [ACGT]

ˆ Anfang ˆ(Hallo | Welt)

$ Ende (the | end)$

. beliebiges Zeichen (ˆ. $)

(5)

Quantifikatoren

∗ 0 - n mal + 1 - n mal

? 0 - 1 mal {n} n mal

{n,} mindestens n mal {n,k} n bis k mal

Normalerweise maximal gematcht, mit nachgestellten ? minimal

(6)

Match

m/pattern/

/pattern/

Skalerer Kontext:

$str =˜m/pattern/

# gibt wahr (1) oder falsch (””) zur ”uck

if( $str =˜m/pattern/){ ... } Listenkontext:

@array = $str =˜m/pattern/g# alle matches in Liste Modifier:

i : case-insensitive

g: globale Suche, progressive Suche

(7)

Match (2)

Progressive Suche:

while( $str =˜m/pattern/ig ){ ... } Besondere Funktionen und Variablen:

pos($str): Position des Zeichens nach aktuellem match length($str ): L¨ange von $str

$&: aktueller match

$‘: Zeichen davor

$’: Zeichen dahinter

pos($str) ==length($‘) +length($&)

(8)

Substitution

s///

$str =˜s/pattern/replacement/;

$str =˜s/pattern/replacement/gi;

$str =˜s/pattern/\u$&/g;

($strtemp = $str) =˜s/pattern/replacement/g;

for $ ( @lines ) { $ =˜s/pattern/replacement/g} for ( @lines ) { s/pattern/replacement/g}

(9)

Capturing

while( $line =˜m/((.∗):(.∗)) ){

print ”$1 => $2, $3”;

}

$line =˜s/(.∗)−(.∗)/−$2+$1/g;

$line = 1234567890;

while( $line =˜s/([0−9]+)([0−9]{3})($|)/$1 $2$3/g){print”$line\n”; } 1234567 890

1234 567 890 1 234 567 890

while( $line =˜s/([0−9]+)([0−9]{3})($|)/$1 $2$3/g){}

1 while ( $line =˜s/([0−9]+)([0−9]{3})($|)/$1 $2$3/g);

(10)

Ubersetzung ¨

tr///

$str =˜tr/ list / list /

$str =˜tr/A−Z/a−z/;

Achtung: Keine Regul¨aren Ausdr¨ucke, keine Muster, sondern Listen!

(11)

Beispiele

$str = ”ACATGATAGGCGTATA”;

if( $str =˜m/((TA){2}|(TA(C|G)+))/){

print $&.”\n”;

}

Ausgabe: TAGGCG

(12)

Beispiele

$str = ”ACATGATAGGCGTATA”;

if( $str =˜m/((TA){2}|(TA(C|G)+))/){

print $&.”\n”;

} Ausgabe:

TAGGCG

(13)

Beispiele (2)

$str = ”ACATGATAGGCGTATA”;

if( $str =˜m/((TA){2}|(TA(C|G)+?))/){

print $&.”\n”;

}

Ausgabe: TAG

(14)

Beispiele (2)

$str = ”ACATGATAGGCGTATA”;

if( $str =˜m/((TA){2}|(TA(C|G)+?))/){

print $&.”\n”;

} Ausgabe:

TAG

(15)

Beispiele (3)

$str = ”ACATGATATATA”;

if( $str =˜m/((TA){2}|(TA(C|G)+?))/){

print $&.”\n”;

}

Ausgabe: TATA

(16)

Beispiele (3)

$str = ”ACATGATATATA”;

if( $str =˜m/((TA){2}|(TA(C|G)+?))/){

print $&.”\n”;

} Ausgabe:

TATA

(17)

Beispiele (4)

$str = ”ACATGATAGGCGTATA”;

while( $str =˜m/((TA){2}|(TA(C|G)+))/g){

print $&.”\n”;

}

Ausgabe: TAGGCG TATA

(18)

Beispiele (4)

$str = ”ACATGATAGGCGTATA”;

while( $str =˜m/((TA){2}|(TA(C|G)+))/g){

print $&.”\n”;

} Ausgabe:

TAGGCG TATA

(19)

Beispiele (5)

$str = ”ACATGATAGGCGTATA”;

$str =˜s/A/T/g;

$str =˜s/C/G/g;

$str =˜s/G/C/g;

$str =˜s/T/A/g;

print $str . ”\n”;

Ausgabe:

ACAACAAACCCCAAAA

(20)

Beispiele (5)

$str = ”ACATGATAGGCGTATA”;

$str =˜s/A/T/g;

$str =˜s/C/G/g;

$str =˜s/G/C/g;

$str =˜s/T/A/g;

print $str . ”\n”;

Ausgabe:

ACAACAAACCCCAAAA

(21)

Beispiele (6)

$str = ”ACATGATAGGCGTATA”;

$str =˜tr/ACGT/TGCA/;

print $str . ”\n”;

Ausgabe:

TGTACTATCCGCATAT

(22)

Beispiele (6)

$str = ”ACATGATAGGCGTATA”;

$str =˜tr/ACGT/TGCA/;

print $str . ”\n”;

Ausgabe:

TGTACTATCCGCATAT

Referenzen

ÄHNLICHE DOKUMENTE

Tire axle 1 left outer 235/35 R19 91Y Michelin Sommer Light alloy 4 mm.. Tire axle 1 right outer 235/35 R19 91Y Michelin Sommer Light alloy

An der Knippenburg (Piekenbrocksbach - Knappenstr.) Bahnhofstraße (Am Südbahnhof - Devensstraße) Beckstraße (Gabelsberger Str. - Devensstraße) Borbecker Straße..

Abfahrt Bottrop-Süd (12) Richtung Stadtmitte (Essener Straße; im weiteren Verlauf Freiherr-vom-Stein-Straße, Friedrich-Ebert-Straße). Von der Friedrich- Ebert-Straße rechts in

[r]

Ich persönlich habe mich in den letzten Wochen manchmal gefragt, ob wir hier als Stadt noch das richtige Augenmaß haben oder ob auch wir mittlerweile durch die Pandemie so

Die Stadt Reutlingen hat sich in diesem Zusammenhang entschieden, für alle Kin- dertageseinrichtungen einheitliche Verfahren festzulegen und auf diese Weise ein

Änderungen vorbehalten Demmelmair GmbH & Co, 0821

Änderungen vorbehalten Demmelmair GmbH & Co, 0821