Regular Expressions. Daniel Lutz Was ist eine Regular Expression?

Ähnliche Dokumente
Proseminar UNIX Tools. Ferdinand Beyer

/ Vortrag Unix-AG

/ Software Freedom Day

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

Theoretische Informatik. Reguläre Sprachen und Automaten

Dateisystem 1, Suchen & Finden

grep kurz & gut John Bambenek and Agnieszka Klus

3 Regular expressions

Formale Sprachen und Automaten

Ferdinand Beyer. 1 Allgemeines Beschreibung Bezeichnungen Einsatzgebiete in UNIX-Tools Notationsarten...

Sebastian Harl. 03. Oktober 2008

Dateisystem 2, Suchen & Finden

Dateisystem 2, RegEx, Manpages

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

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

1.103 Regular Expressions - Reguläre Ausdrücke

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

Benutzung der Manpage, Shell Teil 3

Formale Sprachen. Anwendungen formaler Sprachen Adressen, Kaffeeautomaten, Programmiersprachen. Rudolf Freund, Marian Kogler

Stream EDitor SED und Reguläre Ausdrücke

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

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

Elementare Unix-Befehle 11

Reguläre Ausdrücke Suchmuster, Pattern Matching

Reguläre Ausdrücke O'REILLT. Jeffrey E. E Eriedl. Deutsche Übersetzung von Andreas Karr er

Einleitung. liefert Ihnen alle Dateien, die mit.txt enden. Oder dir bericht??.txt

Dateisystem 2, Suchen & Finden, Manpages

Perl Regular Expressions in Base SAS

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

Einführung in Haskell und seine Werkzeuge

MySQL Informationsgewinnung Teil 3. Stefan Maihack Dipl. Ing. (FH) Datum:

Ein- und Ausgabeumlenkung

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

Linux I II III Res/Pro WN/TT Reguläre Ausdrücke Editoren Scripting. Linux II. 2 Linux II. Reguläre Ausdrücke Editoren Scripting. Ressourcen-Vorkurs

Reguläre Ausdrücke IDE AUTUMN SCHOOL

O'REILLY 8 Beijing Cambridge Farnham Köln Sebastopol Taipei Tokyo. Reguläre Ausdrücke Kochbuch. Jan Goyvaerts & Steven Levithan

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

Propädeutikum Programmierung in der Bioinformatik

Shellprogrammierung. Einführung in Linux. Antonia Blanke. Operatoren Schleifen Case Funktionen Kommandos Signale Stringmanipulation

Hallo Haskell. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :06. Hallo Haskell 1/23

Es gibt viele Programme, die mit regulären Ausdrücken arbeiten:

Schritt für Schritt Reguläre Ausdrücke verstehen. Einstieg in. Reguläre Ausdrücke. Michael Fitzgerald O REILLY. Übersetzung von Thomas Demmig

Hallo Haskell. (Funktionale Programmierung) Prof. Dr. Oliver Braun. Letzte Änderung: :08. Hallo Haskell 1/23

Arbeiten mit der Shell Teil 4

Arbeiten mit der Shell Teil 4

Reguläre Ausdrücke mit Java

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I

Einführung in die Programmiertechnik

Arbeiten mit der Shell Teil 4

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

Dank. Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Reguläre Ausdrücke als Suchmuster für grep

Der vi Editor. Vortrag im Rahmen des Proseminars Unix Tools an der Technischen Universität München im Sommersemester 2005

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

Zugang zu LISP. Franz Inc. Allegro Lisp Version 7.0 ist im Linux Pool installiert.

C. Ortseifen: Reguläre Ausdrücke

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

Empfehlenswerte Referenzen

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

Beuth Hochschule Einführende Gentle-Programme WS12/13, S. 1

Eine Beschreibung des Programms und der dahinter stehenden Philosophie.

GREP. Reguläre Ausdrücke. GREP Hardcore. Syntax. Ersetzen Suchen. Look Around. 20. April 2012 Pubkon 2013

Grundsoftware üblicher Computersysteme

Proseminar. C-Programmierung Grundlagen und Konzepte. Der Präprozessor. von: Svenja Neef

Gepufferte Eingabe und reguläre Ausdrücke 398

Tutorium Reguläre Ausdrücke/Code Munger

Einführung in die Computerlinguistik Suche mit regulären Ausdrücken

Teil VII. Scientific Computing in Computer Science, Technische Universität München

Thema: Excel-Grundlagen

FACHHOCHSCHULE MANNHEIM

Shellprogrammierung. Ein Mehrbenutzersystem in der Praxis - Grundlagen Linux WS Mathematisches Institut Göttingen

Einführung in die Informatik Übung

Grundlagen der Theoretischen Informatik

Programmieren I + II Regeln der Code-Formatierung

Inhalte der Vorlesung. 3. Der Textstrom-Editor sed. 3. Der Textstrom-Editor sed. Grundprinzip eines Textstrom-Editors

Einführung in die Computerlinguistik Suche mit regulären Ausdrücken

1 Schöner suchen und ersetzen mit GREP

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

15 Der AWK. (Aho, Weinberger, Kernighan)

Informationsextraktion Materialien zur Vorlesung

Digital Humanities: Übung 1

Beispiel. Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio)

Suchen & Ersetzen in umfangreichen Dokumentenbeständen

Gepufferte Eingabe und reguläre Ausdrücke 397

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

Programmieren I. Entwicklungsumgebungen Eclipse, NetBeans und IntelliJ IDEA. Institut für Angewandte Informatik

Reguläre Ausdrücke. Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik

Reguläre Ausdrücke. Prof.Dr.Christian Wagenknecht mit Beiträgen von Herrn Dr.Michael Hielscher

Technische Infor matik 2 C/C++-Kurs. Arbeitsumgebung AG Rechner netze 1.1

SelfLinux Reguläre Ausdrücke

Vorlesung Unix-Praktikum

grep in Adobe InDesign

Einführung in die Computerlinguistik Pumpinglemma für reguläre Sprachen. Suche mit regulären Ausdrücken. Dozentin: Wiebke Petersen 17.5.

REXX. Was ist REXX. Scriptsprache für viele Plattformen Erste Schritte F. Hodel os2.a-net.ch

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

Grundbegriffe der Informatik

LinuxUser 08/2002: Reguläre Ausdrücke

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

Kommunikationsmuster (T) Interprozesskommunikation (T) Kommunikation über Pipes (P) Parserspezifikation und -generierung (P)

Transkript:

Regular Expressions Daniel Lutz <danlutz@watz.ch> 12.11.2003 1 Was ist eine Regular Expression? Ausdruck, der ein Textfragment beschreibt Eine Regular Expression passt zu einem Textfragment, wenn das Textfragment der von der Regular Expression definierten Form entspricht. Beispiele: - foo - ^\s*$ - ^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}))$ Text-Beispiel (mit Zeilennummern): 1 Die erste Zeile enthält das Wort foo. 2 3 195.215.35.2 4 Die zweite Zeile ist eine Leerzeile, die Leerzeichen 5 enthalten kann. 6 Die Dritte Zeile ist eine IP-Adresse. 2

Anwendungsbereiche Durchsuchen von Texten, Mails, Logfiles,... (z. B. alle Zeilen finden, die ein bestimmtes Textfragment enthalten) Leistungsstarke Such-Sprache Unterstützt von vielen Tools/Programmiersprachen: grep, lex, sed, Emacs, vi, Delphi, Visual C++, Perl, Tcl, awk, Python, C, Java,... Unter UNIX/Linux sehr weit verbreitet Man kann mit Regular Expressions Textfragmente suchen, aber auch gleich ersetzen (-> automatisches Editieren ) 3 Aufgabenbeispiel 70 Dateien (32'000 Zeilen) müssen durchsucht werden Es muss herausgefunden werden, wie oft das Textfragment \begin{slide} und wie oft \end{slide} vorkommen. Beide Zahlen müssen gleich gross sein. Von Hand machen? - Alle 70 Dateien in Editor laden, Texte suchen und zählen. -> Riesiger Aufwand -> Sehr fehleranfällig Lösung: Regular Expressions und das Tool grep/egrep (und wc -l) 4

Ähnlichkeit mit Wildcards in Dateinamen report.txt *.txt Einzelne Datei Alle Dateien, die die Endung.txt haben * und? sind "Metazeichen" (Platzhalter für andere Zeichen) Regular Expressions sind im Prinzip eine Verallgemeinerung dieses Mechanismus für beliebige Texte (nicht speziell Dateinamen) 5 Aufbau von Regular Expressions Es gibt normale (literale Zeichen) und Metazeichen "virtuelle Zeichen": Anfang einer Zeile, Ende einer Zeile, Anfang eines Wortes, Ende eines Wortes,.... beliebiges Zeichen + mindestens ein Vorkommen des vorigen Zeichens * beliebig viele Vorkommen des vorigen Zeichens? voriges Zeichen ist optional {n} {n,m} ^ genau n Vorkommen des vorigen Zeichens zwischen n und m Vorkommen des vorigen Zeichens Anfang einer Zeile (virtuelles Zeichen) $ Ende einer Zeile (virtuelles Zeichen) 6

Aufbau von Regular Expressions Repetitionszeichen beziehen sich auf das vorige Zeichen (sofern keine Klammern gesetzt sind, siehe unten). Dieses Zeichen kann ein Literal sein oder ein Metazeichen, das ein Platzhalter für ein anderes Zeichen ist (z. B. "."). Sind Klammern gesetzt, enspricht der geklammerte Ausdruck einem Zeichen. Klammern / Alternativen: Regular Expressions können geklammerte Ausdrücke enthalten. Diese Ausdrücke sind geschachtelte Regular Expressions. Mit Hilfe von " " können Alternativen definiert werden. Es muss eine dieser Alternativen zutreffen. Z. B.: (First 1st) bzw. (Fir 1)st ^From Subject Date: vs. ^(From Subject Date): 7 Aufbau von Regular Expressions Character-Klassen: [a-z] [A-Z] [a-za-z] [apz] [-apz] [-a-z] [^a-za-z] beliebiger Kleinbuchstabe beliebiger Grossbuchstabe belebiger Buchstabe (klein oder gross) Buchstabe a, p oder z Bindestrich oder Buchstabe a, p oder z Bindestrich oder beliebiger Kleinbuchstabe Umkehrung: beliebiges Zeichen ausser Buchstaben Eine Character-Klasse steht als Platzhalter für ein einzelnes Zeichen. 8

Aufbau von Regular Expressions Spezielle Zeichen (unterstützt von Perl und evtl. anderen Tools): \s Leerzeichen (Space, Tabulator,...) \S Kein Leerzeichen (anderes Zeichen) \d Ziffer \w Zeichen, das in einem W ort enthalten sein kann \W Zeichen, das nicht in einem W ort enthalten sein kann Diese speziellen Metazeichen sind Platzhalter für ein einzelnes Zeichen. 9 Aufbau von Regular Expressions Metazeichen als Literale: Soll ein Metazeichen als normales Zeichen interpretiert werden, muss es mit einem vorangestellten Backslash geschützt werden: \., \+, \*, \?, \(, \), \[, \], \^, \$,... 10

Unterschiede in verschiedenen Tools Die beschriebene Syntax wird von Perl verwendet. Obwohl die Syntax in den verschienen Tools grundsätzlich ähnlich ist, gibt es einige massgebliche Unterschiede: Einige Tools verwenden die Metazeichen., *,?, +, andere jedoch \., \*, \?, \+ Unterschiedliche Unterstützung verschiedener spezieller Metazeichen (\s, \S, \d, \w, \W, \<, \>, etc.) Es gibt sogar Unterschiede zwischen verschiedenen Implementationen desselben Tools (z. B. sed in Solaris, GNU sed, etc.) W ird also eine Regular Expression für ein bestimmtes Tool beschrieben, muss die vom Tool unterstützte Syntax bekannt sein. Oft arbeitet man aber immer mit demselben Tool (z. B. nur Perl), dann sind diese Unterschiede weniger schlimm. 11 Suchen und Ersetzen Einige Tools ermöglichen, gefundenen Text durch anderen Text zu ersetzen. Dabei können auch nur Teile des gefundenen Textfragments ersetzt werden. W erden in der Regular Expression Klammern verwendet, können die geklammerten Teil-Ausdrücke im Ersetzungstext referenziert werden. Beispiele: sed -e 's/windows/linux/g' windows > linux Alle Vorkommen von "Windows" in der Datei windows durch "Linux" ersetzen und Resultat in Datei linux schreiben (g: alle Vorkommen ersetzen, falls es in einer Zeile mehrere Vorkommen gibt, sonst würde nur jeweils das erste Vorkommen ersetzt) perl -pi -e 's/windows/linux/g' datei Alle Vorkommen von "Windows" in der Datei datei durch "Linux" ersetzen. Die Datei datei wird direkt manipuliert. perl -pi -e 's/((\d{2})\/(\d{2})\/(\d{4}))/$4-$3-$2 ($1)/' datei Amerikanisches Datumsformat ins Australische Datumsformat umwandeln, das ursprüngliche Datum in Klammern dahinter schreiben. 12

Anwendungs-Beispiele Suchen in Texten (Tools grep, egrep) Suchen und Ersetzen in Texten (Tools sed, perl) Suchen/Ersetzen in Editoren (die meisten Editoren unter UNIX/Linux unterstützen Regular Expressions, einige IDEs unter W indows ebenfalls) Überprüfung von Eingabewerten in Programmen (Unterstützung von Regular Expressions durch Programmiersprachen/Bibliotheken) Suchen in mehreren Dateien: find. -type f -exec egrep 'abc.*def' {} /dev/null \; (/dev/null wird angegeben, damit egrep die Dateinamen anzeigt) Kombination von Tool zum Suchen nach Dateien mit Tool zum Suchen in Dateien 13 Fazit Regular Expression bieten einen Mechanismus, mit dem viele Arbeiten sehr einfach, schnell und effizient gelöst werden können Sehr weit verbreitet unter UNIX/Linux, langsam auch Einzug in andere Systeme (IDEs, Java) Man muss das Konzept der Regular Expressions kennen, damit man sie auch anwendet. Dieser Vortrag sollte die Verwendung von Regular Expressions "schmackhaft machen" 14

Buchempfehlung Mastering Regular Expressions, 2nd Edition (Englisch) Jeffrey E. F. Friedl Verlag O'Reilly ISBN 0-596-00289-0 Reguläre Ausdrücke, 2. Auflage (Deutsch) Jeffrey E. F. Friedl (Deutsche Übersetzung: Andreas Karrer) Verlag O'Reilly ISBN 3-89721-349-4 Sehr ausführliche Informationien zu Regular Expressions. Nach dem Studium dieses Buchs sollte man Regular Expressions in allen Situationen anwenden können. 15