Reguläre Ausdrücke mit Java

Ähnliche Dokumente
Reguläre Ausdrücke IDE AUTUMN SCHOOL

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

/ Vortrag Unix-AG

Formale Sprachen und Automaten

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

Informationsextraktion Materialien zur Vorlesung

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

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

Reguläre Ausdrücke. AnPr

Reguläre Ausdrücke. Silke Trißl Wissensmanagement in der Bioinformatik

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

3 Regular expressions

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

Einstieg in die Informatik mit Java

Reguläre Ausdrücke - eine Einführung -

Reguläre Ausdrücke Suchmuster, Pattern Matching

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

Proseminar UNIX Tools. Ferdinand Beyer

Übung Praktische Informatik I

Abschnitt 17: Beispiel: Die Klasse String (Teil 2), das Interface Comparable<T>

Regexp Reguläre Ausdrücke

Empfehlenswerte Referenzen

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

Python für Linguisten

Lexikalische Programmanalyse der Scanner

Einstieg in die Informatik mit Java

Suchen in Texten. Sie wissen wie in einem Text gesucht werden kann Sie wissen wie Suchmaschinen arbeiten Sie können mit Regex in Java umgehen

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

Regular Expressions. Daniel Lutz Was ist eine Regular Expression?

Regexp Reguläre Ausdrücke

Suchen & Ersetzen in umfangreichen Dokumentenbeständen

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie

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

Perl-Praxis. Jörn Clausen

Reguläre Ausdrücke in Python

Perl Regular Expressions in Base SAS

Informatik II. Woche 10, Giuseppe Accaputo

Klausur. Informatik 1 Wintersemester 2005/2006 Prof. Dr. Wolfgang May 4. April 2006, Uhr Bearbeitungszeit: 90 Minuten

Abschnitt 7: Beispiel: Die Klasse String (Teil 1)

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

Version 1.00h ( )

Einstieg in die Informatik mit Java

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

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

Probeklausur Name: (c)

Reguläre Ausdrücke in C#

Reguläre Ausdrücke 1 / 10. Doing Web Apps. Reguläre Ausdrücke. Letzte Änderung: Version: 0.6 Copyright: Alle Rechte vorbehalten

Tutorium 2. Strings. Skript zur Vorlesung Einführung in die Programmierung

Perl-Praxis. Jörn Clausen

Deterministische endliche Automaten - Wiederholung

Grundlagen der Objektorientierten Programmierung - Statische Arrays

Strings in Java. Die String Klasse und Methoden. A. Müller

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

Kapitel 1: Grundbegriffe

1.103 Regular Expressions - Reguläre Ausdrücke

Programmierkurs C++ Variablen und Datentypen

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

Abschnitt 11: Beispiel: Die Klasse String (Teil 1)

Tag 4 Repetitorium Informatik (Java)

Theoretische Informatik I

Gliederung. Informationsextraktion Materialien zur Vorlesung. Entwicklung eines regex für Firmennamen. Entwicklung eines regex für Firmennamen

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

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

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

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

lex - Eine Einführung

Java Lexikalische Struktur

Suchen in Texten. Sie wissen wie in einem Text gesucht werden kann Sie wissen wie Suchmaschinen arbeiten Sie können mit Regex in Java umgehen

Objektorientierte Programmierung. Kapitel 18: Strings

10 Reguläre Ausdrücke

Informatik Vorkurs - Vorlesung 2

Transkript:

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 5. Beispiele 2. Reguläre Ausdrücke in Java 1. Replace 2. Pattern 3. Matcher 3. Anwendungen in ProminentPeople

Grundlagen von regulären Ausdrücken 3 Zeichenkette, zur Beschreibung von Mengen von Zeichenketten theoretische Informatik reguläre Sprachen, endliche Automaten komplizierte Textersetzungen (Mustererkennung) Erzeugung von Wörtern (Schablone)

Aufbau von regulären Ausdrücken 4 bestehen aus Literalen, Meta-Zeichen & Zeichenklassen in Java wie Strings dargestellt abv passt auf gfjsdpabvajfsgofdsklös nicht auf abw

Metazeichen I 5. ^ $ \ [ ] - ( ) { } und Quantoren. beliebiges Zeichen (außer Zeilenumbruch) Alternativen ^ Negation bei Zeichenklassen (Zeilenanfang) $ (Zeilenende) \ Escape-Operator

Metazeichen II 6. ^ $ \ [ ] - ( ) { } und Quantoren [] Definition von Zeichenklassen - notwendig zur Verwendung von Zeichenklassen () Gruppierung {} Mengenangaben {min,max} {0,3} {5,} {,10} {2}

Metazeichen III (Quantoren I) 7. ^ $ \ [ ] - ( ) { } und Quantoren? Optionalität {0,1} + Existenzquantor {1, } * Allquantor {0, }

Quantoren II 8 gieriges Verhalten: Standard findet größtmögliche Zeichenkette Bsp.:.*foo findet in xfooxxxfoo xfooxxxfoo gemäßigt: Anstellen von? bricht früher ab als Bsp.:.*?foo findet in xfooxxxfoo xfooxxxfoo und xfooxxxfoo possesiv: Anstellen von + versucht nur einmal größtmöglichen Treffer zu finden Bsp.:.*+foo findet nichts in xfooxxxfoo

Zeichenklassen 9 beschreiben von Mengen von Zeichen vordefinierte Ziffer \d keine Ziffer \D Buchstabe, Ziffer, Unterstrich \w kein Buchstabe \W ( Tabs Whitespaces \s (Leerzeichen, Zeilenumbrüche, nicht-whitespaces \S selbstdefinierte [a-g] = [abcdefg] [0-9a-zA-z_,;\.\(\)-] [^äöüßäöü]

Randfunde ( Boundary Matchers ) 10 ^ Zeilenanfang $ Zeilenende \b Wortgrenze "\b\w+\b" = "\s\w+\s" \B Nicht-Wortgrenze "\B\w+\B" = "\S\w+\S" \G Ende vom vorherigen Fund \Gxyz!= xyz xyz xyz

Beispiele 11 Name: ([A-ZÄÖÜ]{1}(\. [a-zäöüß]+))?(\s[a-zäöü]{1}[a-zäöüß]+)+ davor: Titel dazwischen: Zwischennamen (von, van, ) email-adresse: [a-z_\-\.]+@[a-z_\-\.]+\.[a-z]{2,4} Straße: ([A-ZÄÖÜ]{1}[a-zäöüß]*(\- \. ))+[1-9]?[\d{0,4}]([a-z] [A- Z])? Geburtsdatum: PLZ: \d{1,2}\.\d{1,2}\.(\d{2} \d{4}) ((0[1-9] [1-2][0-9])\.){2}(19 20)\d{2} ^([A-Z]{1,3}-)?\d{5}$

Reguläre Ausdrücke mit Java 12 public String replaceall (String regex, String replacement) Ersetzen aller gefundenen Vorkommen des regulären Ausdruckes regex durch replacement folgt den normalen Regeln für reguläre Ausdrücke String s = "aaa"; s.replaceall("a*?", "b"); S = "bababab"; Public String replacefirst(..) analog

java.util.regex.pattern 13 regulärer Ausdruck als String gegeben muss kompiliert werden, um angewendet zu werden Public static Pattern Pattern.compile (String regex) Objekt der Klasse Pattern wird erzeugt public Matcher matcher(string s) Anwendung des kompilierten Audrucks auf s

java.util.regex.matcher 14 erzeugt durch Methode matcher() in Klasse Pattern String group(int i) gibt String zurück, auf den das i-te Klammerpaar des Ausdrucks zutrifft bei Index 0 wird der gesamte Ausdruck betrachtet int start(group int) / int end(group int) Index bei Anfang/nach der angegebenen Gruppe

Anwendungen für www.prominentpeople.info 15 s.replaceall("ä", "ä"); s.replaceall("<!--.+?-->", " "); s.replaceall(">([a-za-zäöoäöüß])+?<", " "); s.replaceall("<.+?>", " "); s.replaceall("<.+>", " ");

Anwendungen für www.prominentpeople.info 16 p = Pattern.compile("<.?body.+?>(.+?)</.?body>"); Erkennt durch body und ähnliche Tags eingeschlossene Strukturen da in den Sourcen kein einheitliches body-tag verwendet wird String body = m.group(1); array = body.split("[^a-za-zäöüäöüß]");

Quellen 17 http://java.sun.com/docs/books/tutorial/essential/regex http://de.wikipedia.org/wiki/regulärer_ausdruck Reguläre Ausdrücke, O Reilly Verlag, Jeffrey E. F. Friedl, 2. deutsche Auflage 2004

Danke für die Aufmerksamkeit 18