10 Reguläre Ausdrücke

Größe: px
Ab Seite anzeigen:

Download "10 Reguläre Ausdrücke"

Transkript

1 10 Reguläre Ausdrücke Muster, nach denen zum Beispiel Dateien durchsucht werden sollen, können mit Hilfe von regulären Ausdrücken gebildet werden. engl.: Muster = pattern; regulärer Ausdruck = regular expression Ein regulärer Ausdruck wird durch normale Zeichen und Metazeichen gebildet. Nach den normalen Zeichen wird literal gesucht, wobei die Metazeichen dazu dienen, um nach bestimmten Zeichenkonstruktionen, Kombinationen bzw. Anordnungen zu suchen. Reguläre Ausdrücke bieten somit ein mächtiges und leistungsfähiges Werkzeug zum Suchen und Ersetzen. Jede Minute, die man in Reguläre Ausdrücke investiert, zahlt sich vielfach aus! Reguläre Ausdrücke können bei UNIX in einer ganzen Reihe von Programmen verwendet werden: ed, sed, expr, grep, pg, vi, awk und vor allem bei allen gängigen Shells. In der Regel werden reguläre Ausdrücke benutzt, um Dateien nach dem Auftreten bestimmter Inhalte zu durchsuchen oder generelle Ersetzungen vorzunehmen. Eine Zeile aus einem awk-programm (awk ist ein UNIX-Tool) könnte eine Anweisung enthalten, die schematisch so dargestellt werden kann: /regulärer_ausdruck/ {Aktion} Damit wird in allen Zeilen, auf die der reguläre Ausdruck zutrifft, die in Klammern stehende Aktion durchgeführt. Die Zeilen können aus einer Datei stammen. Reguläre Ausdrücke werden bei Perl meist in der Form /regulärer_ausdruck/ dargestellt. Ob eine Variable einen bestimmten Text enthält, kann mit der Bedingung $zeichenkette =~ /regulärer_ausdruck/ analysiert werden. print "Bill ist dabei!\n" if ($string =~ /Bill/); Ist der Text Bill in der Variablen $string enthalten, dann ist die Bedingung erfüllt und eine Meldung wird ausgegeben. Nachfolgend wird erst das Bilden regulärer Ausdrücke erläutert, bevor die Operatoren vorgestellt werden, die diese verwenden Metazeichen Für die Bildung von regulären Ausdrücken stehen folgende Metazeichen zur Verfügung: \ Entwertet das nächste Zeichen ^ Steht für Zeilenanfang. Beliebiges Zeichen (außer Zeilenvorschub) $ Steht für Zeilenende (oder vor dem Zeilenvorschub) Alternative () Gruppierung [] Zeichenklasse 69

2 Das einfachste Beispiel für einen regulären Ausdruck ist eine Zeichenkette. Wenn mehrere Zeichen oder Teilausdrücke hintereinander stehen, müssen diese auch in der Reihenfolge erkannt werden. Beim Muster /Heino/ gibt es nur einen Treffer, wenn die Zeichenkette auch den Teilstring Heino enthält. Metazeichen müssen entwertet werden, um literal nach ihnen zu suchen. Damit sind folgende Zeichen zu entwerten, um sie literal zu benutzen: \ ( ) [ ] { } ^ $ *?. + /\?/ Literale Zeichen werden durch den umgekehrten Schrägstrich in Metazeichen bzw. Sonderzeichen umgewandelt. /\b\t\s\r/ Der. ist ein Platzhalter für ein beliebiges Zeichen: Buchstabe, Ziffer, Leerzeichen, Tabulator oder sonstige Sonderzeichen außer dem Zeilenvorschub. Folgender regulärer Ausdruck sucht nach einem P gefolgt von zwei beliebigen Zeichen und dann einem l. Damit passt der Ausdruck zum Beipiel auf: Perl, Pril, Pool, Paul, Paulchen, Philipp, Philadelphia, Philosoph /P..l/ Das nachfoldende Suchmuster trifft bei allen Zeichenketten außer bei einem leeren String: /./ Eine Alternative zeigt der vertikale Balken an. Es wird ein Mitglied der Feuersteins gesucht: /Fred Wilma Barney Betty/ Runde Klammern dienen zur Gruppierung unterschiedlichster Art. Mit einer Gruppierung alternativer Teilstrings lassen sich Montag und Freitag aus dem Kalender streichen: /(Mon Frei)tag/ Um eine Zeichenkette am Anfang und am Ende überprüfen zu können, werden die Zeichen ^ und $ verwendet. /^"/ # Die Zeile beginnt mit Anführungszeichen /\.$/ # Die Zeile endet mit einem Punkt /^$/ # Leerzeile Diese Zeichenklasse sucht einen Vokal: /[aeiouaeiou]/ Eine Zeichenklasse stellt immer nur genau ein Zeichen dar. Dies verdeutlicht die Suche nach zwei aufeinanderfolgenden Vokalen. /[aeiouaeiou][aeiouaeiou]/ 70

3 Mit dem Startwert, dem Endwert und dem Bindestrich dazwischen lassen sich Bereiche angeben. /[A-ZÄÖÜ]/ /[a-zäöüßa-zäöü]/ /[\0-\xFF] # Großbuchstaben # Alle Groß- und Kleinbuchstaben # Alle ASCII-Zeichen Um eine Zeichenklasse zu komplementieren muss das Zeichen ^ vor der Liste der Zeichen in der Zeichenklasse stehen. /[^0-9]/ # Ein Zeichen, dass keine Ziffer ist Das Zeichen ^ hat nur am Anfang einer Zeichenklasse eine Sonderbedeutung. Soll es in einer Zeichenklasse literal verwendet werden, empfiehlt es sich, es nicht am Anfang zu setzen, da es sonst entwertet werden muss. /[abc^]/ Soll das Zeichen ] in einer Zeichenklasse literal verwendet werden, muss dieses entwertet werden. Das Zeichen - ist bei der literalen Suche zu entwerten, wenn dieses einen Bereich angeben könnte. Andere Metazeichen von regulären Ausdrücken verlieren ihre Sonderbedeutung innerhalb von eckigen Klammern. /[\]\-\\[(){}^*+?.]/ # Nur die ersten drei Zeichen müssen entwertet werden /[a\-b][ab-][-ab]/ # Alle drei Zeichenklassen sind identisch Weil häufig nach einer bestimmten Klasse von Zeichen gesucht werden muss, sind in Perl die wichtigsten gebräuchlichen Zeichenklassen bereits vordefiniert. Definition Zeichen Negation Whitespace 30 [ \t\n\r\f] \s \S Wortzeichen, außer Umlaut [a-za-z_0-9] \w \W und ß Ziffer [0-9] \d \D Die Negation der Zeichenklasse stellt der entsprechende Großbuchstabe bereit. So prüft beispielsweise das \D auf ein Zeichen, das keine Ziffer ist Quantifikatoren Weitere Metazeichen sind Quantifikatoren. Quantifikatoren bestimmen, wie oft sich etwas wiederholen darf, was vor ihm steht. Dies sind Atome (einzelne Buchstaben) oder Teilausdrücke. Dabei trifft zum Beispiel der Quantifikator * auch bei 0 Wiederholungen. Das heißt: Der Ausdruck vor dem Quantifikator muss nicht auftauchen. 30 Es gibt keinen treffenden deutschen Begriff für Whitespace. Deshalb wird hier der englische verwendet. Einfach erklärt sind Whitespaces alle Zeichen, die auf dem Papier nichts Sichtbares hinterlassen. 71

4 Perl kennt folgende Quantifikatoren: * 0 oder mehrmals + 1 oder mehrmals? 1 oder keinmal {n} genau n-mal (Anzahl) {min,} mindestens min-mal {min,max} zwischen min- und max-mal Anmerkung: Bei min > max bricht der Compiler mit einer Fehlermeldung ab. Folgender regulärer Ausdruck erkennt ein Wort: \w+ Telefonnummern mit mindestens vier, aber nicht mehr als sieben Ziffern: \d{4,7} Fünfstellige Postleitzahlen: \d{5} Minimum: \d{4,} Maximum: \d{0,4} Folgende Quantifikatoren sind identisch: * {0,} + {1,}? {0,1} Vergleich zur Dateisubstitution der Bourne-Shell:? genau ein beliebiges Zeichen * 0 oder mehrere beliebige Zeichen In erweiterten regulären Ausdrücken, die bei UNIX-Tools verwendet werden, steht das? wie bei Perl für 0- oder 1-mal. Beispiel für die Suche nach HTML-Tags in der Form <...>, also suchen nach einer öffnenden spitzen Klammer, danach mindestens ein Zeichen, das keine schließende spitze Klammer ist, gefolgt von einer spitzen schließenden Klammer. /<[^>]+>/ 72

5 10.3 Gruppierung und Rückwärtsreferenzen Eine Gruppierung ist zum Beispiel notwendig, um eine Reihe hintereinanderstehender Atome zu quantifizieren. /(abc){5}/ abcabcabcabcabc # Suche nach: Die runden Klammern bewirken, dass die eingeschlossenen Ausdrücke den speziellen Variablen $1, $2, $3, $4 usw. und den Rückwärtsreferenzen \1, \2, \3, \4 usw. zugeordnet werden. Die Rückwärtsreferenzierung mit dem \ erfolgt nur innerhalb des regulären Ausdrucks. Die Variablen $1, $2 usw. sind innerhalb des umschließenden Blocks 31 oder bis zum nächsten Treffen eines regulären Ausdrucks gültig. $_="Teil1:Teil2"; print "$1\n" if /(Teil)1:(\1)2/; # Ausgabe von: Teil /(Teil1):(Teil2)/; print "$1, $2\n"; # Ausgabe von: Teil1, Teil2 Um die Referenzierung des Ausdrucks zu unterbinden, bietet die erweiterte Syntax für reguläre Ausdrücke das speicherlose Klammerpaar an: (?:regulärer_ausdruck) $_="Teil1:Teil2"; /(?:Teil1):(Teil2)/; print "$1\n"; # Ausgabe von: Teil2 Die Rückwärtsreferenz eines gruppierten Teilausdrucks, dem ein Quantifikator folgt, wird bestimmt durch den letzten Treffer. "Eins Zwei" =~ /(\w)+/; print "\$1=$1\n"; # Ausgabe von: $1=s Gruppierungen lassen sich auch schachteln. Auch hierbei erfolgt die Nummerierung der gefundenen Teilausdrücke von links nach rechts. Um die Nummerierung der Rückwärtsreferenzen eines komplizierten Ausdrucks zu ermitteln, zählt man einfach die öffnenden Klammern bis dorthin. "Eins Zwei" =~ /((\w)+)/; print "\$1=$1 \$2=$2\n"; # Ausgabe von: $1=Eins $2=s Generelle Arbeitsweise des Matchers Im Standard-Modus bringt der Matcher so viele Zeichen in einem Ausdruck unter wie möglich. Das heißt: Je mehr Zeichen auf den Ausdruck passen, desto besser. Ist dann der reguläre Ausdruck erfüllt, beendet der Matcher die Arbeit. Der Matcher kann als gefräßig betrachtet werden. Die Gefräßigkeit des Matchers lässt sich an einem Beispiel mit Gruppierung zeigen: $_="Teil1:Teil2:Teil3"; print $1 if /(.+):/; # Ausgabe von: Teil1:Teil2 Der zweite Doppelpunkt wird zur Deckung des Ausdrucks benutzt. Dies lässt sich mit dem 31 Statt in einem Block könnte der reguläre Ausdruck auch in einer Zeichenkette stehen, die evaluiert wird (eval-zeichenkette). 73

6 Non-greedy-Operator (greedy=gefräßig) abstellen. $_="Teil1:Teil2:Teil3"; print $1 if /(.+?):/; # Ausgabe von: Teil1 Der Non-greedy-Operator, das?, wird nach dem Symbol für die Wiederholung, in diesem Fall nach dem +, platziert. Folgende Tabelle zeigt die möglichen Kombinationen von Quantifikatoren und dem Nongreedy-Operator (?): *? 0 oder mehrmals, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks +? 1 oder mehrmals, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks?? muss nicht oder einmal vorhanden sein, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks {min,}? {min,max}? mindestens min-mal, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks zwischen min- und max-mal, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks 10.4 Quoting-ähnliche Operatoren Bei Perl sind die regulären Ausdrücke eng in die Sprache eingebunden. Das geschieht nicht mit Bibliotheksfunktionen, sondern mit Operatoren, die diese verwenden. Dies ermöglicht ein Höchstmaß an Funktionalität. Nach dem Vorstellen regulärer Ausdrücke sollen nun die Operatoren dafür näher betrachtet werden. Die Bedingung $string =~ /regulärer_ausdruck/ verwendet den Operator //. Die Operanden für diesen Operator sind der reguläre Ausdruck und der Suchtext, auf den jener angewendet wird. Dieser Operator zählt zu der Gruppe der quoting-ähnlichen Operatoren. Dieser Term erhält, wie im Kapitel Operatoren schon erwähnt, die höchste Priorität bei der Auswertung eines Ausdrucks. 74

7 Der Operator zur Mustersuche: // bzw. m// Der Operator zum Suchen eines regulären Ausdrucks in einer Zeichenkette wird in der Literatur auch Pattern-Matching-Operator genannt. Die exakte Definition sieht folgendermaßen aus: m/regulärer_ausdruck/cgimosx /regulärer_ausdruck/cgimosx Die Buchstaben cgimosx, die am Ende stehen, sind Optionen. Diese werden auch Modifizierer oder Flags genannt. Auf diese Optionen wird am Ende dieses Abschnitts eingegangen. Der Operator muss nicht immer den regulären Ausdruck in Schrägstrichen einschließen. Steht ein einleitendes m davor, kann der reguläre Ausdruck auch durch Zeichen, die keine alphanumerischen Zeichen oder Whitespaces sind, oder von Klammerpaaren begrenzt werden. Beispiele zum Einschließen des regulären Ausdrucks mit der oder ohne die Option m: /regulärer_ausdruck/ m#regulärer_ausdruck# m(regulärer_ausdruck) m{regulärer_ausdruck} Die Verwendung der Option m ist zum Beispiel dann sinnvoll, wenn eine Zeichenkette untersucht werden soll, in der die einzelnen Teilstücke durch / voneinander getrennt sind. Variablen werden jedes Mal interpoliert, wenn ein Mustervergleich stattfindet: $pattern = '\s(\w+)\s'; # Suche nach einem von Whitespaces /$pattern/; # eingeschlossenen Wort Auch hier gibt es eine Ausnahme: Bei der Verwendung von ' als Trennzeichen erfolgt keine Interpolation. Der Operator liefert im skalaren Kontext wahr (1) oder falsch ('') zurück. Wenn der Operator nicht an eine Zeichenkette gebunden ist, wird in der Zeichenkette $_ gesucht: $_ = "Ziege Katze Hund"; print "$1" if /(Ziege)/; Der Operator // lässt sich mit den Operatoren =~ und!~ an eine Zeichenkette binden: $string = "Zu untersuchende Zeichenkette\n"; if ($string =~ /Zu/) { print $string; } Der Operator!~ arbeitet wie =~, nur dass der Rückgabewert negiert wird. Im Beispiel wird der reguläre Ausdruck durch die Zeichenkette Zu dargestellt. Diese Buchstabenkombination ist in der zu untersuchenden Zeichenkette enthalten. Die Bedingung im vorherigen Beispiel ist also wahr, deshalb erfolgt das Ausgeben der Zeichenkette. Wie immer ist die default-variable $_. Dies ist auch bei der Funktion print so. Perl ist so aufgebaut, dass alles möglichst kurz geschrieben werden kann. Das sollen folgende Beispiele verdeutlichen. 75

8 Wie im vorherigen Beispiel soll die Zeichenkette ausgegeben werden: $_="Zu untersuchende Zeichenkette\n"; if (/Zu/) { print; } # Oder noch kürzer: print if /Zu/; Im Listen-Kontext liefert der Operator eine Liste zurück, die aus den in runden Klammern eingeschlossenen Teilausdrücken des regulären Ausdrucks besteht. ($wort1, $wort2, $etc) = "Erste. Zweite. Rest des Strings" =~ /^(\S+)\s+(\S+)\s*(.*)/; print "$wort1\n$wort2\n$etc\n"; # Ausgabe von: # Erste. # Zweite. # Rest des Strings Trifft der reguläre Ausdruck nicht, wird eine leere Liste zurückgegeben. Trifft der reguläre Ausdruck, ist aber keine Gruppierung darin, wird die Liste (1) zurückgegeben. ($was_suche_ich_eigentlich) = "Erste. Zweite. Rest des Strings." =~ /\S+/; print "$was_suche_ich_eigentlich\n"; # Ausgabe von: Optionen Eine kurze Erläuterung zu den Optionen enthält nachfolgende Tabelle: Option c g i m o s x Beschreibung Verändert nicht die Suchposition bei Misserfolg und Verwendung der Option g Sucht nach jedem Vorkommen des Suchmusters in einer Zeile, also nicht nur nach dem ersten Vorkommen (global search) Führt die Muster-Suche durch, ohne dabei Groß- und Kleinschreibung zu unterscheiden (case insensitive search) Behandelt die Eingabe als mehrzeilige Zeichenkette (multiple lines) Liest den als Suchmuster angegebenen regulären Ausdruck nur einmal (compile pattern once) Behandelt die Eingabe als einzeilige Zeichenkette (single) Verwendet erweiterte reguläre Ausdrücke (extended regular expressions) Die Option x wird auch als Modifizierer für reguläre Ausdrücke benutzt, um die Lesbarkeit des Musters durch Leerzeichen und Kommentare zu erhöhen. Somit erfüllt x zwei Funktionen nämlich, das Einfügen von Leerzeichen und Kommentaren sowie das Interpretieren von erweiterten regulären Ausdrücken beim Operator //. 76

9 Die Option s Zum Untersuchen einer Zeichenkette, die sich über mehrere Zeilen erstreckt, ist die Option s erforderlich. Die Zeichenkette wird als eine Zeile behandelt. Das Metazeichen. trifft dann auch auf \n. " behandeln der Rückwärtsreferenzierung behandeln der Option s " =~ /(\w+).*\s\1\s/s; # suche nach: Wort, evtl. beliebiger Text, selbes Wort in # Whitespaces eingeschlossen printf 'Das Wort "%s" wurde wiederholt.'. "\n", $1; # Ausgabe von: Das Wort "behandeln" wurde wiederholt. Die Option m Im Normalfall bezeichnet $ das Ende einer Zeichenkette ohne das abschließende Newline- Zeichen. Soll aber in einer mehrzeiligen Zeichenkette $ das Ende einer Zeile repräsentieren, muss die Option m verwendet werden. " behandeln der Rückwärtsreferenzierung behandeln der Option m " =~ /(ung$)/m; print "$1\n"; # Ausgabe von: ung Das Beispiel liefert nur mit der Verwendung der Option m einen Treffer, ansonsten müsste nach ung\n gesucht werden. Die Option x (Kommentare) In einer while-schleife steht zum Beispiel eine Zeile, die diese beendet, wenn eine Leerzeile oder eine Zeile nur mit Whitespaces eingelesen wird. while(...) {... last if /^\s*$/;... } Um eine bessere Lesbarkeit des Programms zu erhalten, soll die Zeile in der while-schleife mit Kommentaren versehen werden. Dazu ist die Option x der regulären Ausdrücke zu verwenden. while(...) {... last if m( ^ # Zeilenanfang \s* # Kein oder beliebig viele Whitespaces $ # Zeilenende }... )x; # Der Modifizierer x gestattet Kommentare 77

10 Option g im skalaren Kontext Bei der Verwendung der Option g in einem skalaren Kontext wird bei jeder erneuten Ausführung die nächste Übereinstimmung gefunden. z. B.: while ($string =~ /regulärer Ausdruck/g) Bei einem Treffer ist der Rückgabewert wahr. Die Position des letzten Treffers kann mit der Funktion pos angezeigt werden. $string="123g 134gooo"; print "Der Buchstabe \"g\" befindet sich auf den Positionen: "; while($string =~ /g/g) { print pos($string)." "; } print "\n"; Ausgegeben wird: Der Buchstabe "g" befindet sich auf den Positionen: 4 9 Trifft der reguläre Ausdruck nicht zu, wird die Suchposition auf den Zeichenkettenanfang gesetzt. Dies kann durch die Option c verhindert werden. $_="123g 134gooo"; /g/g; print pos, "\n"; /z/g; # Der reguläre Ausdruck trifft nicht, kein z in $_ /g/g; print pos, "\n\n"; $_="123g 134gooo"; /g/gc; print pos, "\n"; /z/gc; # Der reguläre Ausdruck trifft nicht, kein z in $_ /g/gc; print pos, "\n"; Ausgegeben wird: Beispiel für die Option g im Listen-Kontext $_ = "gg"; ($str1, $str2) = /g/g; printf "$str1, $str2\n"; # Ausgabe von: g, g 78

11 Der Substitutionsoperator: s/// s/regulärer_ausdruck/ersetzung/egimosx sucht einen regulären Ausdruck in einer Zeichenkette. Wenn dieser gefunden wird, wird er durch den Ersetzungstext ersetzt und die Anzahl der Ersetzungen wird zurückgegeben. Andernfalls wird eine leere Zeichenkette (logisch falsch) zurückgegeben. Wie schon beim Operator // kann auch dieser Operator durch =~ oder!~ an eine Zeichenkette gebunden werden, ansonsten wird in $_ gesucht und ersetzt. $_ = "new car"; s/new/old/; $string = "old car"; $string =~ s/old/new/; print "$_, $string\n"; # operiert auf $_ # operiert auf $string # Ausgabe von: old car, new car Was wird zurückgegeben? $_ = "old"; print s/old/new/, "\n"; # Ausgabe von: 1 $string = "old"; $a = $string!~ s/old/new/; print ">$a<\n"; # Ausgabe von: >< Wie an dem Beispiel zu sehen ist, wird bei dem Operator!~ beim Treffen des Musters nicht die Anzahl der Substitutionen zurückgegeben, sondern die leere Zeichenkette. Der Wahrheitswert wird negiert. Auch beim Substitutionsoperator muss der Schrägstrich nicht das Trennzeichen sein. Es lassen sich auch andere Zeichen oder Klammerpaare verwenden. Trennzeichen dürfen alle nicht alphanumerischen Zeichen sein. Ausgenommen sind Whitespaces als Trennzeichen. Wenn das Suchmuster von Klammerpaaren begrenzt wird, hat die Ersetzung ein eigenes Paar von Trennzeichen. Diese müssen nicht Klammerpaare sein. $path =~ s#/freeware/bin#/usr/local/bin#; s(old)(new); s(old)[new]; s<old>/new/; Variable werden interpoliert. Es sei denn das Trennungszeichen ist '. $Muster='.ld'; $Ersatz=new; s/$muster/$ersatz/; # äquivalent zu: s/.ld/new Die Flags imosx haben dieselbe Bedeutung wie beim Operator m//. Lediglich das e-flag bedarf einer Erklärung. Das Flag g wird an einem Beispiel gezeigt. Die Option e Die Option e bewirkt die Interpretation der Ersetzung als Perl Ausdruck. Die Ersetzung wird erst durch die Funktion eval() ausgeführt, bevor sie für den regulären Ausdruck eingesetzt wird. 79

12 Die Zeichenkette abc wird durch den Rückgabewert des Unterprogramms ersetzt: sub funk1 { return "123"; } $_='abc'; s/abc/funk1()/e; print "$_\n"; # Ausgabe von: 123 Ausgeben einer Zufallszahl: $_ = "Zufallszahl: rand\n"; s/rand/int(rand(5))/e; # int() und rand() sind Perl-Funktionen print; $& ist eine spezielle Variable für reguläre Ausdrücke. Sie enthält den letzten Treffer eines regulären Ausdrucks. $_='abc123xyz'; /123/; print "$&\n"; # Ausgabe von: 123 $_='abc123xyz'; s/\d+/$&*2/e; # liefert für $_ : abc246xyz Die Option g $_='alt alt alt'; $Anzahl = s/alt/neu/; print "$_, Die Anzahl der Ersetzungen ist $Anzahl\n"; # Ausgabe von: neu alt alt, Die Anzahl der Ersetzungen ist 1 $_='alt alt alt'; $Anzahl = s/alt/neu/g; print "$_, Die Anzahl der Ersetzungen ist $Anzahl\n"; # Ausgabe von: neu neu neu, Die Anzahl der Ersetzungen ist $n statt \n Bei der Rückwärtsreferenzierung ist auf der rechten Seite des Substitutionsoperators die Schreibweise $n der Schreibweise \n vorzuziehen. Gemeint ist hier: $1, $2... ist statt \1, \2... zu verwenden. Die Ersetzung wird als eine in Anführungszeichen stehende Zeichenkette betrachtet. $n ist daher eindeutiger. Besonders bei der Verwendung der Option e werden Schwierigkeiten vermieden. 80

13 Nachfolgendes Beispiel zeigt, dass beim Ausführen eines Perl-Skripts mit der Option w, welches die Schreibweise \n verwendet, eine Warnung ausgegeben wird. #!/usr/bin/perl -w $_='alf'; s/(\w+)/\1\1/; print "$_\n"; Meldungen auf dem Bildschirm beim Ausführen des Skripts: \1 better written as $1 at./warn line 3. \1 better written as $1 at./warn line 3. alfalf Die nachfolgenden zwei Beispiele zeigen Fälle, bei denen die Verwendung der Schreibweise \n nicht zum gewünschen Ziel führt. $_="8 ** 2 ist gleich: "; s/(\d)(.+)/$1. $2. $1 ** 2/e; print "$_\n"; # Ausgabe von: 8 ** 2 ist gleich: 64 Bei dem Ausdruck s/(\d)(.+)/\1. \2. \1 ** 2/e; würde \ als Operator zum Anlegen einer Referenz interpretiert werden. $_="Betrag: 62T "; s/(\d+)t /${1}000,00 /; print "$_\n"; # Ausgabe von: Betrag: 62000,00 Nicht funktionieren würde, $_="Betrag: 62T "; s/(\d+)t /\1000,00 /; print "$_\n"; # Ausgabe von: da \100 in einer Zeichenkette das Zeichen mit dem oktalen ASCII-Wert 100 ist. Den oktalen ASCII-Wert 100 hat das Auch durch geschweifte Klammern lässt sich das Problem in dieser Form (Schreibweise \n) nicht lösen: /(\d+)t /\{1}000,00 /; # Betrag: {1}000,00 /(\d+)t /{\1}000,00 /; # Betrag: {62}000,00 81

14 Der Transliterationsoperator: tr/// bzw. y/// tr/zeichenfolge/ersetzungsliste/cds y/zeichenfolge/ersetzungsliste/cds Dieser Operator verwendet keine regulären Ausdrücke. In der Literatur wird er aber meist nach den Operatoren m// und s/// erwähnt, da er auch einen quoting-ähnlichen Operator darstellt. Jedes Vorkommen eines Zeichens aus Zeichenfolge wird mit dem korrespondierenden Zeichen aus Ersetzungsliste ersetzt. Anders gesagt: Transliteriert der Operator jedes Vorkommen eines Zeichen in Zeichenfolge mit dem entsprechenden Zeichen in Ersetzungsliste. Das erste Zeichen in Zeichenfolge wird mit dem ersten Zeichen von Ersetzungsliste ersetzt, usw. Der Rückgabewert ist die Anzahl der ersetzten oder gelöschten Zeichen. y ist ein Synonym für tr in Anlehnung an das UNIX-Kommando sed. y ist ein sed-kommando, das auch eine Transliteration bewirkt. Selbst tr gibt es auch als UNIX-Kommando. Wie üblich arbeitet der Operator auf $_, wenn er nicht über =~ oder!~ an eine Zeichenkette gebunden wird. Ein Zeichenbereich kann mit einem Bindestrich angegeben werden: tr/a-j/0-9/ macht dieselbe Ersetzung wie tr/acegibdfhj/ / Wenn die Zeichenfolge von Klammerpaaren begrenzt wird, kann die Ersetzungsliste ihr eigenes Paar von Trennzeichen haben: tr[a-z][a-z] tr[a-z]/a-z/ tr#a-z#a-z# Option c d s Bedeutung Komplement der Zeichenfolge Lösche nicht ersetzte Zeichen Nach der Ersetzung gleiche aufeinanderfolgende Zeichen zu einem verkürzen Bei der Option d wird jedes Zeichen gelöscht, das in der Zeichenfolge steht, aber keinen Ersatz in der Ersetzungsliste hat. Andernfalls wird die Option d nicht verwendet und ist die Ersetzungsliste kürzer als die Zeichenfolge werden die fehlenden Zeichen mit den entsprechenden aus der Zeichenfolge aufgefüllt. Bei einer leeren Ersetzungsliste wird die Zeichenfolge dupliziert. Dies ist nützlich zum Zählen von Zeichen oder Verkürzen gleicher aufeinanderfolgender Zeichen. $_='BOOK'; tr/a-z/a-z/s; macht dasselbe wie: tr/a-z//s; # BOOK BOK $_='BOOK'; tr/ok//d; $count = tr/*/*/; # BOOK B # zählt die Sterne in $_ 82

15 Der Modifizierer c bewirkt die Komplementierung der Zeichenfolge. Die komplementierte Zeichenfolge enthält dann alle Zeichen außer den in der ursprünglichen Zeichenfolge angegebenen Zeichen. Anschließend erfolgt die Ersetzung. tr/a-za-z/ /cs; # wandelt alle Zeichen, die keine Buchstaben sind, # in ein Leerzeichen $_="Schreibe jedes Wort auf eine Zeile!"; tr/a-za-z/\012/cs; print "$_"; Erzeugt folgende Ausgabe: Schreibe jedes Wort auf eine Zeile 10.5 Übung 1. Aufgabe Entfernen Sie aus einer unter Windows erstellten Text-Datei die Carriage Return (Wagenrücklauf) am Zeilenende, um diese Datei an UNIX anzupassen. (CR/LF ->LF) Für das UNIX Betriebssystem sind diese Zeichen redundant. Scheiben Sie dazu einen Filter. Das heißt, das Programm liest von der Standard-Eingabe und schreibt auf die Standard-Ausgabe. 2. Aufgabe Schreiben Sie einen Filter, der umgekehrt wie in Aufgabe 1 arbeitet. Für eine von UNIX stammende Text-Datei sollen für Windows die Carriage Return (am Zeilenende) eingefügt werden. 83

16 84

Reguläre Ausdrücke Suchmuster, Pattern Matching

Reguläre Ausdrücke Suchmuster, Pattern Matching Suchmuster, Pattern Matching Ein oder mehrere Einzelzeichen in interner Variablen $_suchen: /e/ #liefert wahr, wenn $_ ein 'e' enthält. /aus/ #liefert wahr, wenn $_ 'aus' enthält. while { if (/e/)

Mehr

Übersicht. Einführung in Perl Operatoren - Richtigstellung Mustersuche II. Richtigstellung Operatoren (2) Richtigstellung Operatoren (1)

Übersicht. Einführung in Perl Operatoren - Richtigstellung Mustersuche II. Richtigstellung Operatoren (2) Richtigstellung Operatoren (1) IMS Einführung in Perl Operatoren - Richtigstellung Mustersuche II Universität Stuttgart Institut für maschinelle Sprachverarbeitung http://www.ims.uni-stuttgart.de/lehre/teaching/2003-ws/perl/home.html

Mehr

Proseminar UNIX Tools. Ferdinand Beyer

Proseminar UNIX Tools. Ferdinand Beyer Reguläre Ausdrücke Proseminar UNIX Tools Ferdinand Beyer Technische Universität München 08.11.2005 Ferdinand Beyer (TUM) Reguläre Ausdrücke 08.11.2005 1 / 39 Gliederung Allgemeines 1 Allgemeines 2 Notation

Mehr

Formale Sprachen und Automaten

Formale Sprachen und Automaten Formale Sprachen und Automaten Kapitel 3: Regular Expressions Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Kapitel 3 Regular

Mehr

Reguläre Ausdrücke IDE AUTUMN SCHOOL

Reguläre Ausdrücke IDE AUTUMN SCHOOL Reguläre Ausdrücke 1 Reguläre Ausdrücke Übersicht Einführung Grundlagen Währenddessen: Übungen 2 Was sind Reguläre Ausdrücke? Reguläre Ausdrücke sind Zeichenketten, die Mengen von Zeichenketten beschreiben.

Mehr

Ein- und Ausgabeumlenkung

Ein- und Ausgabeumlenkung Ein- und Ausgabeumlenkung Viele Prozesse lesen und/oder schreiben Daten (z.b. who, date, cat, rm -i,...) Zu jedem Kommando gibt es voreingestellte Dateien, von denen Daten gelesen und/oder in die Daten

Mehr

3 Regular expressions

3 Regular expressions 3 Regular expressions Es gibt eine ganze Reihe von Unix-Werkzeugen, für deren Benutzung es sinnvoll oder gar wesentlich ist, dass man mit etwas umgehen kann, was als regular expression oder kurz Regex

Mehr

Reguläre Ausdrücke mit Java

Reguläre Ausdrücke mit Java Reguläre Ausdrücke mit Java Johannes Dyck, Thomas Schulz Projektseminar www.prominentpeople.info Gliederung 2 1. Grundlagen von regulären Ausdrücken 1. Aufbau 2. Zeichenklassen 3. Metazeichen 4. Quantoren

Mehr

Kommandozeileneingabe. Einführung in Perl Kommandozeileneingabe etc. Kommandozeileneingabe Optionen. Kommandozeileneingabe Bsp (1)

Kommandozeileneingabe. Einführung in Perl Kommandozeileneingabe etc. Kommandozeileneingabe Optionen. Kommandozeileneingabe Bsp (1) Einführung in Perl Kommandozeileneingabe etc. Kommandozeileneingabe index-funktion rindex-funktion substr-operator grep-operator map-operator Kommandozeileneingabe Ausführung von Perl-Kommandos direkt

Mehr

Webengineering. Reguläre Ausdrücke. Dienstag, 2. Juli 13

Webengineering. Reguläre Ausdrücke. Dienstag, 2. Juli 13 Webengineering Reguläre Ausdrücke Marcel Vilas 1 DHBW - Stuttgart 1 RegExp - Allgemein Muster, die eine Menge von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln beschreiben Werden oft als Suchmuster

Mehr

15 Der AWK. (Aho, Weinberger, Kernighan)

15 Der AWK. (Aho, Weinberger, Kernighan) 15 Der AWK (Aho, Weinberger, Kernighan) Mächtiges Werkzeug zum Manipulieren von Dateien -> Reportgenerator Feldweise Bearbeitung von Dateien oder String - liest zeilenweise Suchen nach Text mit vorgebenen

Mehr

Lexikalische Struktur von Fortran 95. Normierte Zeichensätze

Lexikalische Struktur von Fortran 95. Normierte Zeichensätze Lexikalische Struktur von Fortran 95. Normierte Zeichensätze Im Folgenden steht für ein Leerzeichen! ASCII (American Standard Code for Information Interchange. Es gibt eine DIN-Norm die dem entspricht),

Mehr

Übersicht. Einführung in Perl Mustersuche III/ Datentypen II. Mehrzeiliges Matching (1) Mehrzeiliges Matching (2) chomp

Übersicht. Einführung in Perl Mustersuche III/ Datentypen II. Mehrzeiliges Matching (1) Mehrzeiliges Matching (2) chomp Einführung in Perl Mustersuche III/ Datentypen II Universität Stuttgart Institut für maschinelle Sprachverarbeitung http://www.ims.uni-stuttgart.de/lehre/teaching/2003-ws/perl/home.html [email protected]

Mehr

Perlkurs WS 14/15 Reguläre Ausdrücke I

Perlkurs WS 14/15 Reguläre Ausdrücke I Perlkurs WS 14/15 Reguläre Ausdrücke I 1 Reguläre Ausdrücke Reguläre Ausdrücke mächtigtes Werkzeug von Perl, um nach Mustern (Gruppen von Zeichen) innerhalb von Text zu suchen z.b. in Protein- und DNA-Sequenzen

Mehr

Linux II. Reguläre Ausdrücke Editoren Scripting. 2 Linux II. Linux I II III Res WN/TT NLTK XML Weka E Reguläre Ausdrücke Editoren Scripting

Linux II. Reguläre Ausdrücke Editoren Scripting. 2 Linux II. Linux I II III Res WN/TT NLTK XML Weka E Reguläre Ausdrücke Editoren Scripting Linux II 2 Linux II Reguläre Ausdrücke Editoren Scripting Reguläre Ausdrücke Reguläre Ausdrücke beschreiben eine Menge von Zeichenfolgen und werden benutzt um m festzustellen, ob eine Zeichenkette Teil

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben

Mehr

C. Ortseifen: Reguläre Ausdrücke

C. Ortseifen: Reguläre Ausdrücke Inhalt Reguläre Ausdrücke mit SAS Einsatz der RX- und PRX-Funktionen Dr. Carina Ortseifen SAS-Treff am URZ 2. Dezember 2005 1. Einleitung 2. Aufbau der regulären Ausdrücke 3. Beispiele 4. Reguläre Ausdrücke

Mehr

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!! !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!! Erste Zeile eines PERL-Scripts: #! /usr/bin/perl Variablen in PERL: Normale Variablen beginnen mit einem $-Zeichen Array-Variablen beginnen mit

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Vorbemerkung. Allgemeines zu Shell Scripts. Aufruf. Einfaches Beispiel

Vorbemerkung. Allgemeines zu Shell Scripts. Aufruf. Einfaches Beispiel Inhalt: Vorbemerkung...1 Allgemeines zu Shell Scripts...1 Aufruf...1 Einfaches Beispiel...1 Testen eines Shell-Scripts...2 Kommandozeilen-Parameter...2 Prozeßsteuerung...3 Bedingte Ausführung: if...3 Mehrfachentscheidung:

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

Arithmetik in der tcsh

Arithmetik in der tcsh Arithmetik in der tcsh Variablen speichern Zeichenketten (also Strings/Wörter) @ statt set Interpretation als arithmetische Ausdrücke (aus Ziffern, (, ), +, -, *, /, % bestehend) Beispiele: @ var = (3

Mehr

lex - Eine Einführung

lex - Eine Einführung lex - Eine Einführung Axel Kohnert 9th May 2005 Abstract lex ist ein Unixprogramm, welches die Erstellung eines C-programms für die lexikalische Analyse unterstützt. Dazu kann man Aktionen definieren,

Mehr

Regular Expressions. Daniel Lutz Was ist eine Regular Expression?

Regular Expressions. Daniel Lutz Was ist eine Regular Expression? Regular Expressions Daniel Lutz 12.11.2003 1 Was ist eine Regular Expression? Ausdruck, der ein Textfragment beschreibt Eine Regular Expression passt zu einem Textfragment, wenn das Textfragment

Mehr

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe Informatik Vorlesung 03b Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik

Mehr

Wozu braucht man das? (1) Wozu braucht man das? (2)

Wozu braucht man das? (1) Wozu braucht man das? (2) Programmierkurs für absolute Anfänger Reguläre Ausdrücke / regular expressions Wozu braucht man das? (1) Caren Brinckmann Sommersemester 2005 http://www.coli.uni-saarland.de/~cabr/teaching.php Programmierkurs

Mehr

Bedingte Anweisungen

Bedingte Anweisungen Bedingte Anweisungen Bedingte Anweisungen werden nicht immer ausgeführt, sondern nur, wenn eine Bedingung erfüllt (wahr) ist. C/C++/Java bieten hier 2 Konstruktionen an: if-anweisung sowie switch-case

Mehr

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 29 Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente

Mehr

Reguläre Ausdrücke. Einstieg in PHP 5.4 und MySQL 5.5. Zusatzkapitel zum Buch: Thomas Theis ISBN

Reguläre Ausdrücke. Einstieg in PHP 5.4 und MySQL 5.5. Zusatzkapitel zum Buch: Thomas Theis ISBN Zusatzkapitel zum Buch: Thomas Theis Einstieg in PHP 5.4 und MySQL 5.5 ISBN 978-3-8362-1877-1 Galileo Press 2012 1 Suchmuster Reguläre Ausdrücke dienen zur Beschreibung von Suchmustern. Mit Hilfe dieser

Mehr

Familie von Zeichenkettensuchprogrammen "grep", "egrep", "fgrep"

Familie von Zeichenkettensuchprogrammen grep, egrep, fgrep für die Arbeit mit Files 9.Hilfsrogramme ========================================= Stream Editor "" 9.1 Familie von Zeichenkettensuchrogrammen "gre", "egre", "fgre" 9.2 9.3 File Such Programm "find" j

Mehr

Regular expressions for pros Reguläre Ausdrücke für Fortgeschrittene (Perl) Elena Neuburg

Regular expressions for pros Reguläre Ausdrücke für Fortgeschrittene (Perl) Elena Neuburg Regular expressions for pros Reguläre Ausdrücke für Fortgeschrittene (Perl) Elena Neuburg Inhaltsverzeichnis Definition Pattern Matching Greediness Eagerness Backtracking Nützliche Optionen Backreferences

Mehr

Tag 2 Repetitorium Informatik (Java)

Tag 2 Repetitorium Informatik (Java) Tag 2 Repetitorium Informatik (Java) Dozent: Daniela Novac Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Zeichen und

Mehr

Einführung in PERL 2 Reguläre Ausdrücke

Einführung in PERL 2 Reguläre Ausdrücke Einführung in PERL 2 Reguläre Ausdrücke BASIEREND AUF FOLIEN VON DR. H. ZINSMEISTER und dem Buch `Einführung in Perl (Lama Buch) von RL Schwartz&T Phoenix sowie hwp://de.sel[tml.org/perl/sprache/regexpr.htm

Mehr

Perl Regular Expressions in Base SAS

Perl Regular Expressions in Base SAS Webinar@Lunchtime Perl Regular Expressions in Base SAS Perl Reguläre Ausdrücke (Perl Regular Expressions) Einleitung Perl Regulare Ausdrücke beschreiben einen Text, der als Muster dient. In einem solchen

Mehr

Grundlagen der Informatik Vorlesungsskript

Grundlagen der Informatik Vorlesungsskript Grundlagen der Informatik Vorlesungsskript Prof. Dr. T. Gervens, Prof. Dr.-Ing. B. Lang, Prof. Dr. F.M. Thiesing, Prof. Dr.-Ing. C. Westerkamp 16 AUTOMATISCHES ÜBERSETZEN VON PROGRAMMEN MIT MAKE... 2 16.1

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2012/2013, SS 2013 Programmieren I + II Regeln der Code-Formatierung Die hier vorgestellten

Mehr

/ Vortrag Unix-AG

/ Vortrag Unix-AG 16.6.2010 / Vortrag Unix-AG xkcd Fortsetzung... Grundlegendes 1 Begriff: = regular expressions kurz: regex Funktion: definieren flexible Muster, mit denen in Texten gesucht (und ersetzt) werden kann. Diese

Mehr

UNIX Power Tools. Helferlein für den Alltag. Maximilian Haupt

UNIX Power Tools. Helferlein für den Alltag. Maximilian Haupt UNIX Power Tools Helferlein für den Alltag Maximilian Haupt [email protected] Fakultät für Informatik, Otto-von-Guericke-Universität Magdeburg Magdeburg, 28. Oktober 2008 1 Reguläre Ausdrücke

Mehr

Wiederholung. Ein deterministischer endlicher Automat (DEA) über einem Alphabet A besteht aus: einer endlichen Menge von Zuständen Q,

Wiederholung. Ein deterministischer endlicher Automat (DEA) über einem Alphabet A besteht aus: einer endlichen Menge von Zuständen Q, Wiederholung Ein deterministischer endlicher Automat (DEA) über einem Alphabet A besteht aus: einer endlichen Menge von Zuständen Q, einem Anfangszustand q 0 Q, einer Menge von Endzuständen Q E Q, einer

Mehr

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort then S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert

Mehr

Übersicht. Einführung in Perl Datenstrukturen I. Datentypen Übersicht (1) Kernbegriffe. Kernbegriffe. Einführung der Datentypen.

Übersicht. Einführung in Perl Datenstrukturen I. Datentypen Übersicht (1) Kernbegriffe. Kernbegriffe. Einführung der Datentypen. Übersicht Kernbegriffe Einführung der Datentypen Skalare im Detail Vergleichsoperatoren Standardeingabe chomp-operator while-schleife Perl, 24.10.03 Datentypen I 1 Datentypen Übersicht (1) Datentyp Erklärung

Mehr

Reguläre Ausdrücke. Felix Döring, Felix Wittwer 14. November Python-Kurs

Reguläre Ausdrücke. Felix Döring, Felix Wittwer 14. November Python-Kurs Reguläre Ausdrücke Felix Döring, Felix Wittwer 14. November 2016 Python-Kurs Gliederung 1. Grundlagen 2. Matching Regeln Sonderzeichen Zusammengesetzte Regex Spezielle Sequenzen 3. Methoden 4. reqular

Mehr

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Sequentielle Textdateien HARALD NAHRSTEDT. Erstellt am

Excel + VBA. Ergänzungen. Kapitel 1 Einführung in VBA Sequentielle Textdateien HARALD NAHRSTEDT. Erstellt am HARALD NAHRSTEDT Excel + VBA Ergänzungen Kapitel 1 Einführung in VBA 1.5.23 Sequentielle Textdateien Erstellt am 12.02.2012 Beschreibung In Textdateien lassen sich schnell Informationen speichern und auch

Mehr

Reguläre Ausdrücke. Michael Jäger. 4. April 2017

Reguläre Ausdrücke. Michael Jäger. 4. April 2017 Reguläre Ausdrücke Michael Jäger 4. April 2017 Zeichenketten und Sprachen Ein Alphabet ist eine endliche Menge von Symbolen. Beispiele: 1. Σ 1 = {0, 1} 2. Σ 2 = {a, b, c, d, e, f, g, h, i, j, k, l, m,

Mehr

Schleifen: Immer wieder dasselbe tun

Schleifen: Immer wieder dasselbe tun Schleifen: Immer wieder dasselbe tun Bei einer Schleife werden Anweisungen immer wieder ausgeführt, solange die Bedingung wahr ist. Dafür muss man eine Variable immer wieder ändern, solange bis eine Überprüfung

Mehr

Dateisystem 2, Suchen & Finden

Dateisystem 2, Suchen & Finden Dateisystem 2, Suchen & Finden Linux-Kurs der Unix-AG Benjamin Eberle 15. Januar 2015 ln ln ( link ) legt Verknüpfungen an, Verwendung wie cp ohne Optionen wird ein zweiter Name für die gleiche Datei erzeugt

Mehr

Empfehlenswerte Referenzen

Empfehlenswerte Referenzen Wenn Google etwas nicht finden kann, fragen sie Jack Bauer. ("Fakten über Jack Bauer") Inhalt Empfehlenswerte Referenzen...1 0 Wozu reguläre Ausdrücke?...1 1 Die Elemente regulärer Ausdrücke...2 2 Ein

Mehr

Grundlagen der Programmentwicklung

Grundlagen der Programmentwicklung Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling [email protected] Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Über C++ Über C++ C++ ist eine in der Industrie

Mehr

Einführung in die Programmierung für NF. Übung

Einführung in die Programmierung für NF. Übung Einführung in die Programmierung für NF Übung 03 06.11.2013 Inhalt Methoden in Java Gültigkeitsbereiche EBNF Einführung in die Programmierung für NF Übung 03 2 Methoden in Java In Methoden werden Ausdrücke

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Lexikalische Programmanalyse der Scanner

Lexikalische Programmanalyse der Scanner Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung

Mehr

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt).

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt). 3 Erste Programme 3.1 Übungsaufgabe Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt). 3.1.1 Aufgabe 1 Schreiben Sie ein C++ Programm, das einen String einliest und testet,

Mehr

Dateisystem 1, Suchen & Finden

Dateisystem 1, Suchen & Finden Dateisystem 1, Suchen & Finden Linux-Kurs der Unix-AG Benjamin Eberle 15. Juni 2016 ln ln ( link ) legt Verknüpfungen an, Verwendung wie cp ohne Optionen wird ein zweiter Name für die gleiche Datei erzeugt

Mehr

WS2018/ Oktober 2018

WS2018/ Oktober 2018 Einführung in die Programmierung Ronja Düffel WS2018/19 02. Oktober 2018 RBI-Account Account für das Rechnernetz der Informatik RBI-Account HRZ-Account zum Arbeiten an und auf den Rechnern des Instituts

Mehr

WS2017/ Oktober 2017

WS2017/ Oktober 2017 Ronja Düffel WS2017/18 05. Oktober 2017 mit Python Programmieren (vereinfacht) 1 Problem beschreiben und analysieren 2 Enwicklung und Beschreibung einer Lösung 3 Übertragung/Umsetzung in eine Programmiersprache

Mehr

Ausdrücke (1) Grundlegende Eigenschaften

Ausdrücke (1) Grundlegende Eigenschaften Ausdrücke () Grundlegende Eigenschaften bestehen aus Literalen, Konstanten, Variablen und Operatoren einfachster Ausdruck ist das Semikolon, es bewirkt nichts. Ausdrücke werden mit einem Semikolon abgeschlossen.

Mehr

Arbeiten mit Regulären Ausdrücken. Annette Gerstenberg Würzburg, 16. März 2016 Workshop "Digitale Methoden" beim Forum Junge Romanistik

Arbeiten mit Regulären Ausdrücken. Annette Gerstenberg Würzburg, 16. März 2016 Workshop Digitale Methoden beim Forum Junge Romanistik Arbeiten mit Regulären Ausdrücken Annette Gerstenberg Würzburg, 16. März 2016 Workshop "Digitale Methoden" beim Forum Junge Romanistik Warum RegEx? Ziele! Beispiel 1: Bereinigen eines Transkripts, Entfernen

Mehr

8. Arbeiten mit Dateien

8. Arbeiten mit Dateien 8. Arbeiten mit Dateien www.c-programme.de Stefan Thiemert Kapitel 8 - Seite 1 von 6 8. 1. Allgemeines Bisher haben wir Daten, die wir in unseren Programmen erzeugt und verarbeitet haben, nur über den

Mehr

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen Gehe nach links oder rechts Gehe solange geradeaus... Leibniz Universität IT Services Anja Aue Programmabläufe grafisch abbilden

Mehr

Systemverwaltung mittels Skripts

Systemverwaltung mittels Skripts Systemverwaltung mittels Skripts Sept. 2003 M. Rigling 1 / 1 Version 0.2 Inhaltsverzeichnis: Systemverwaltung mittels Skripts...1 Inhaltsverzeichnis:...2 1. Skriptsprachen...3 2. Zur Erstellung von Skripts...3

Mehr

Übersicht Shell-Scripten

Übersicht Shell-Scripten !!!! Wichtig: Bei Shell-Scripten enden die Zeilen nicht mit einem Strichpunkt!!!! Erste Zeile eines Shell-Scripts: #! /bin/bash Variablen in Shell-Scripts: Variablennamen müssen mit einem Buchstaben beginnen,

Mehr

Abstrakte Syntax von Prolog (1)

Abstrakte Syntax von Prolog (1) 3. Prolog Syntax 3-1 Abstrakte Syntax von Prolog (1) Abstrakte und konkrete Syntax: Abstrakte Syntax: Nur Datenstrukturen, die der Parser anlegt (z.b. Operatorbaum). Konkrete Syntax: Zeichenketten, die

Mehr

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 26. August 2009 1/17 Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe Prof. G. Kemnitz

Mehr

Shell-Scripting Teil 2 - Reguläre Ausdrücke

Shell-Scripting Teil 2 - Reguläre Ausdrücke Shell-Scripting Teil 2 - Reguläre Ausdrücke Alexander Gordon Freie Universität Berlin 5. Vorlesung WS17/18 Outline Reguläre Ausdrücke Was sind reguläre Ausdrücke? Syntax Suchen mit grep/egrep Ersetzen

Mehr

Stream EDitor SED und Reguläre Ausdrücke

Stream EDitor SED und Reguläre Ausdrücke Stream EDitor SED und Reguläre Ausdrücke ExactCODE New Thinking Store 11. Mai 2006 Was ist SED? sed steht für Stream EDitor eine Variante des Unix Editors ed und arbeitet auf Streams keine interaktiven

Mehr

b{2} [^b]{2} Reguläre Ausdrücke als Hilfsmittel der Textanalyse Manuel Raaf Bayerische Akademie der Wissenschaften, IT-Referat

b{2} [^b]{2} Reguläre Ausdrücke als Hilfsmittel der Textanalyse Manuel Raaf Bayerische Akademie der Wissenschaften, IT-Referat b{2} [^b]{2} Reguläre Ausdrücke als Hilfsmittel der Textanalyse Manuel Raaf [email protected] Bayerische Akademie der Wissenschaften, IT-Referat Reguläre Ausdrücke engl. regular expressions, kurz: regex, regexp

Mehr

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

Mehr

Peter Prinz. Das Übungsbuch. CTestfragen und Aufgaben mit Lösungen

Peter Prinz. Das Übungsbuch. CTestfragen und Aufgaben mit Lösungen Peter Prinz Das Übungsbuch CTestfragen und Aufgaben mit Lösungen Grundlagen Dieses Kapitel enthält grundlegende Fragen und Aufgaben zur Erstellung von C-Programmen. Hierzu gehören folgende Themen: Header-Dateien

Mehr

Reguläre Ausdrücke. Reguläre Ausdrücke = Regular Expressions = reg.exp./regexp/regexp = RE

Reguläre Ausdrücke. Reguläre Ausdrücke = Regular Expressions = reg.exp./regexp/regexp = RE Blockseminar Einführung in die Korpuslinguistik Seminarleitung: Yvonne Krämer, M.A. REGULAR EXPRESSIONS RegExp Was ist ein regulärer Ausdruck? = Regular Expressions = reg.exp./regexp/regexp = RE Ein regulärer

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 7. Vorlesung 18.05.2016 1 Konstanten Ganzzahlkonstante Dezimal: 42, 23, -2 Oktal (0 vorangestellt): 052 Hexadezimal (0x vorangestellt): 0x2A Gleitkommazahlen: 3.1415, 2.71,

Mehr

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Übungen zur Vorlesung Wissenschaftliches Rechnen I Übungen zur Vorlesung Wissenschaftliches Rechnen I Nicolas Gauger, René Lamour, Hella Rabus Wintersemester 2007/2008 Programmierung - Einführung Programmierung - Einführung Berechnung einer Formel y =

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 17 Einstieg in die Informatik mit Java String Tokenizer Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 17 1 Überblick Tokenizer 2 StringTokenizer 3 Verwendung von String.split

Mehr

Benutzung der Manpage, Shell Teil 3

Benutzung der Manpage, Shell Teil 3 Benutzung der Manpage, Shell Teil 3 Linux-Kurs der Unix-AG Andreas Teuchert 3./9. Mai 2012 Manpages Dokumentation zu Programmen, speziellen Dateien, etc. steht in Manpages Aufruf mit man Manpage

Mehr

Einführung in Perl Übersicht Operatoren Mustersuche I Autoinkrement und Autodekrement Autoinkrement und Autodekrement Bsp

Einführung in Perl Übersicht Operatoren Mustersuche I Autoinkrement und Autodekrement Autoinkrement und Autodekrement Bsp Übersicht Ergänzendes zu Operatoren Autoinkrement ++ und Autodekrement - logisches und && und oder Ordnung von Operatoren Reguläre Ausdrücke Diamantoperator Perl, 31.10.03 Mustersuche I 1 Autoinkrement

Mehr

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt? 1.8 Kontrollstrukturen 75 1.8.5 Wiederholungen Häufig muss die gleiche Teilaufgabe oft wiederholt werden. Denken Sie nur an die Summation von Tabellenspalten in der Buchführung oder an das Suchen einer

Mehr

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Java Übung Übung 2 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 19. April 2006 (UniDUE) 19. April 2006 1 / 13 Java Programme Java Programme bestehen aus (meist mehreren) Klassen. In den Klassen

Mehr