Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die...
Transcript of Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die...
![Page 1: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/1.jpg)
Wiederholung: Klassen und ObjekteHands-On: Modellieren Sie ein Auto mit Motor!• Der Motor besitzt eine public-Methode power(), die auf dem Bildschirm
“TuckTuckTuck” ausgibt.• Jedes Auto halt als private-Attribut einen Motor.• Der Motor jedes Autos wird bei Konstruktion des Autos initialisiert.• Das Auto hat eine public-Methode drive(), welche den Motor startet
(=power() aufruft) und “Let us go!” ausgibt.
class Motor:
def power(self):
print "TuckTuckTuck"
class Auto:
def __init__(self):
self.__motor=Motor()
def drive(self):
self.__motor.power()
print "Let us go!"
a1 = Auto()
a1.drive ()
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 151
![Page 2: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/2.jpg)
Wiederholung: Klassen und ObjekteHands-On: Modellieren Sie ein Auto mit Motor!• Der Motor besitzt eine public-Methode power(), die auf dem Bildschirm
“TuckTuckTuck” ausgibt.• Jedes Auto halt als private-Attribut einen Motor.• Der Motor jedes Autos wird bei Konstruktion des Autos initialisiert.• Das Auto hat eine public-Methode drive(), welche den Motor startet
(=power() aufruft) und “Let us go!” ausgibt.
class Motor:
def power(self):
print "TuckTuckTuck"
class Auto:
def __init__(self):
self.__motor=Motor()
def drive(self):
self.__motor.power()
print "Let us go!"
a1 = Auto()
a1.drive ()
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 151
![Page 3: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/3.jpg)
Vererbung in der Realitat
Objekt
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 152
![Page 4: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/4.jpg)
Vererbung in der Realitat
Objekt
Maschine
Tier
Möbel
Pflanze
Comput.
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 152
![Page 5: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/5.jpg)
Vererbung in der Realitat
Objekt
Maschine
Auto
Tier
Säuget.
Möbel
StuhlTisch
Pflanze
Baum
Blume
Comput.
Laptop
Desktop
Vectorc.
Cluster
Reptilien
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 152
![Page 6: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/6.jpg)
Vererbung in der Realitat
Objekt
Maschine
Auto
BMW
Audi
VW
Tier
Säuget.
Pferd
Esel
Möbel
StuhlTisch
Pflanze
Baum
Blume
Comput.
Laptop
Desktop
Vectorc.
Cluster
Liegestuhl
Ahorn
Eiche
Buche
Lilie
Tulpe
Rose
Reptilien
Katze
Krokodil
Schlange
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 152
![Page 7: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/7.jpg)
Vererbung in der Realitat
Objekt
Maschine
Auto
BMW
Audi
VW
Golf
Polo
Phaeton
Tier
Säuget.
Pferd
EselMaulesel
Möbel
StuhlTisch
Pflanze
Baum
Blume
Comput.
Laptop
Desktop
Vectorc.
Cluster
Liegestuhl
Ahorn
Eiche
Buche
Lilie
Tulpe
Rose
Reptilien
Katze
Krokodil
Schlange
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 152
![Page 8: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/8.jpg)
Ruckblick: Erstes Klassenbeispiel
class Student:
"Einfache Beschreibung eines Studierenden"
def __init__(self , name): # Konstruktor
self.__name = name
def getName(self): # Methode
return self.__name
person1 = Student("Alex")
person2 = Student("Michaela")
print "Hier kommt " + person1.getName ()
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 153
![Page 9: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/9.jpg)
Vererbung• Klassen konnen von einer Basisklasse / Oberklasse erben• Dadurch sind sie abgeleitete Klasse / Unterklasse der Basisklasse• Alle Klassen konnen spezialisiert werden• Alle Klassen zusammen bilden eine Klassenhierarchie• Methoden der Oberklasse konnen ubernommen oder neu definiert
(uberschrieben) werden
class Werkstudent(Student ):
def __init__(self , name , thema):
Student.__init__(self , name)
self.thema = thema
def printInfo(self):
print "%s arbeitet an: %s" % \
(self.getName(), self.thema)
person3 = Werkstudent("Stefan", "Tabellenkalkulation")
person3.printInfo ()
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 154
![Page 10: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/10.jpg)
Vererbung• Klassen konnen von einer Basisklasse / Oberklasse erben• Dadurch sind sie abgeleitete Klasse / Unterklasse der Basisklasse• Alle Klassen konnen spezialisiert werden• Alle Klassen zusammen bilden eine Klassenhierarchie• Methoden der Oberklasse konnen ubernommen oder neu definiert
(uberschrieben) werden
class Werkstudent(Student ):
def __init__(self , name , thema):
Student.__init__(self , name)
self.thema = thema
def printInfo(self):
print "%s arbeitet an: %s" % \
(self.getName(), self.thema)
person3 = Werkstudent("Stefan", "Tabellenkalkulation")
person3.printInfo ()
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 154
![Page 11: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/11.jpg)
Vererbung: “Ist ein”• Vererbung impliziert ein “ist ein”-Verhaltnis zwischen abgeleiteter und
Basisklasse→Werkstudent “ist ein” Student→ Auto “ist ein”e Maschine
• Saubere Klassenmodellierung vs. intuitive/verbale Beschreibung• Beispiel: Vogel
class Vogel:
def fly(self):
print "Ich kann fliegen"
class Pinguin(Vogel):
def swim(self):
print "Ich schwimme"
p = Pinguin ()
### argh , Pinguine koennen nicht fliegen !!!
p.fly()
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 155
![Page 12: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/12.jpg)
Vererbung: “Ist ein”• Vererbung impliziert ein “ist ein”-Verhaltnis zwischen abgeleiteter und
Basisklasse→Werkstudent “ist ein” Student→ Auto “ist ein”e Maschine
• Saubere Klassenmodellierung vs. intuitive/verbale Beschreibung
• Beispiel: Vogel
class Vogel:
def fly(self):
print "Ich kann fliegen"
class Pinguin(Vogel):
def swim(self):
print "Ich schwimme"
p = Pinguin ()
### argh , Pinguine koennen nicht fliegen !!!
p.fly()
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 155
![Page 13: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/13.jpg)
Vererbung: “Ist ein”• Vererbung impliziert ein “ist ein”-Verhaltnis zwischen abgeleiteter und
Basisklasse→Werkstudent “ist ein” Student→ Auto “ist ein”e Maschine
• Saubere Klassenmodellierung vs. intuitive/verbale Beschreibung• Beispiel: Vogel
class Vogel:
def fly(self):
print "Ich kann fliegen"
class Pinguin(Vogel):
def swim(self):
print "Ich schwimme"
p = Pinguin ()
### argh , Pinguine koennen nicht fliegen !!!
p.fly()
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 155
![Page 14: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/14.jpg)
Modellierung mit UMLFlussdiagramme• Nur geeignet fur kleine
Algorithmen• Keine Darstellung von
Klassenhierarchien• Keine Darstellung von
Datenabhangigkeiten• ...
Solange a>0 und b>0
a = a - b
a>b?ja nein
b = b - a
Ausgabe a
b==0?ja nein
Ausgabe b
UML: Unified Modeling Language•
”visuelle“Modellierungssprache• Sprache unterstutzt unterschiedliche Diagrammtypen• Software wird uber diese Diagramme/Modelle spezifiziert• Kann als Basis fur die Dokumentation dienen• Automatische Code-Generierung moglich• Auch fur sonstige betriebliche Ablaufe geeignet
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 156
![Page 15: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/15.jpg)
Modellierung mit UMLFlussdiagramme• Nur geeignet fur kleine
Algorithmen• Keine Darstellung von
Klassenhierarchien• Keine Darstellung von
Datenabhangigkeiten• ...
Solange a>0 und b>0
a = a - b
a>b?ja nein
b = b - a
Ausgabe a
b==0?ja nein
Ausgabe b
UML: Unified Modeling Language•
”visuelle“Modellierungssprache• Sprache unterstutzt unterschiedliche Diagrammtypen• Software wird uber diese Diagramme/Modelle spezifiziert• Kann als Basis fur die Dokumentation dienen• Automatische Code-Generierung moglich• Auch fur sonstige betriebliche Ablaufe geeignet
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 156
![Page 16: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/16.jpg)
Strukturdiagramme• Klassendiagramm• Objektdiagramm• Kompositionsstrukturdiagramm• Komponentendiagramm• Verteilungsdiagramm• Paketdiagramm• Profildiagramm
Verhaltensdiagramme• Aktivitatsdiagramm• Anwendungsfalldiagramm (Use-Cases)• Interaktionsubersichtsdiagramm• Kommunikationsdiagramm• Sequenzdiagramm• Zeitverlaufsdiagramm• Zustandsdiagramm
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 157
![Page 17: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/17.jpg)
Strukturdiagramme• Klassendiagramm• Objektdiagramm• Kompositionsstrukturdiagramm• Komponentendiagramm• Verteilungsdiagramm• Paketdiagramm• Profildiagramm
Verhaltensdiagramme• Aktivitatsdiagramm• Anwendungsfalldiagramm (Use-Cases)• Interaktionsubersichtsdiagramm• Kommunikationsdiagramm• Sequenzdiagramm• Zeitverlaufsdiagramm• Zustandsdiagramm
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 157
![Page 18: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/18.jpg)
KlassendiagrammEinzelne Klasse• Klasse dargestellt durch Rechteck• Horizontale Unterteilung in drei Bereiche• Oberster Bereich: Klassenname• Mittlerer Bereich: Attribute/Variablen• Unterer Bereich: Methoden
Klassenname
+ public_vars private_vars+ public_methods private_methods
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 158
![Page 19: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/19.jpg)
Syntax der Klassenbeschreibung• Name von Klasse/Variablen/Methoden frei wahlbar• +: public Variable/Methode (optional)• -: private Variable/Methode (optional)• Fur Variablen kann der Typ angegeben werden (nach :)• Fur Methoden kann der Ruckgabewert angegeben werden (nach :)
Auto
+ farbe: str nummer: int+ drive()
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 159
![Page 20: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/20.jpg)
Vererbung• Darstellung durch Pfeil mit ”geschlossener“Spitze•
”ist ein“- Beziehung• Pfeil von spezialisierter Klasse zur Vaterklasse
Fahrzeug
Auto Motorrad
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 160
![Page 21: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/21.jpg)
Assoziation• Semantischer Zusammenhang zwischen Klassen• Beschreibung der Assoziation neben dem Pfeil
Vorlesung
Dozent Student
liest hört
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 161
![Page 22: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/22.jpg)
Aggregation und Komposition• Aggregation (leere Raute): ”hat ein“• Komposition (volle Raute): ”enthalt ein“• Angabe der Anzahl moglich
Hund
Besitzer Beine1 4
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 162
![Page 23: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/23.jpg)
Hands-On: Stellen Sie das Verhaltnis von Auto/Motor in UML dar!
class Motor:
def power(self):
print "TuckTuckTuck"
class Auto:
def __init__(self):
self.__motor=Motor()
def drive(self):
self.__motor.power()
print "Let us go!"
Auto
Motor1
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 163
![Page 24: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/24.jpg)
Hands-On: Stellen Sie das Verhaltnis von Auto/Motor in UML dar!
class Motor:
def power(self):
print "TuckTuckTuck"
class Auto:
def __init__(self):
self.__motor=Motor()
def drive(self):
self.__motor.power()
print "Let us go!"
Auto
Motor1
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 163
![Page 25: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/25.jpg)
Teil VII
Regulare Ausdrucke
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 164
![Page 26: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/26.jpg)
Konzept von Teil VII: Regulare Ausdrucke
• Zeit: ≈ 45 Minuten• Inhalt
• Theoriegrundlagen Regularer Ausdrucke• Python-Syntax Regularer Ausdrucke
• Lernziele• Die Teilnehmer konnen Beispiele fur den Nutzen und die Anwendung
Regularer Ausdrucke angeben.• Sie sind in der Lage, grundlegende Regulare Ausdrucke in Python
zu verstehen und bzgl. Syntax und Semantik an einfachenBeispielen korrekt umzusetzen..
• Sie konnen greedy und non-greedy Ausdrucke konzuptellunterscheiden und in Python umsetzen.
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 165
![Page 27: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/27.jpg)
Konzept von Teil VII: Regulare Ausdrucke
• Zeit: ≈ 45 Minuten• Inhalt
• Theoriegrundlagen Regularer Ausdrucke• Python-Syntax Regularer Ausdrucke
• Lernziele• Die Teilnehmer konnen Beispiele fur den Nutzen und die Anwendung
Regularer Ausdrucke angeben.• Sie sind in der Lage, grundlegende Regulare Ausdrucke in Python
zu verstehen und bzgl. Syntax und Semantik an einfachenBeispielen korrekt umzusetzen..
• Sie konnen greedy und non-greedy Ausdrucke konzuptellunterscheiden und in Python umsetzen.
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 165
![Page 28: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/28.jpg)
Was wir uns (vielleicht) schon immer gefragt haben:• Wie funktioniert Suche nach einer Zeichenfolge in einem Text?• Wie wird Auto-Vervollstandigung in Entwicklungsumgebungen realisiert?• Woher weiß ein email client, ob eine Emailadresse valide ist?
⇒ Da sind regulare Ausdrucke im Spiel
regulare Ausdrucke = regular expressions = regex
Unterbau: Formale Sprachen (Theoretische Informatik)
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 166
![Page 29: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/29.jpg)
Was wir uns (vielleicht) schon immer gefragt haben:• Wie funktioniert Suche nach einer Zeichenfolge in einem Text?• Wie wird Auto-Vervollstandigung in Entwicklungsumgebungen realisiert?• Woher weiß ein email client, ob eine Emailadresse valide ist?
⇒ Da sind regulare Ausdrucke im Spiel
regulare Ausdrucke = regular expressions = regex
Unterbau: Formale Sprachen (Theoretische Informatik)
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 166
![Page 30: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/30.jpg)
Was wir uns (vielleicht) schon immer gefragt haben:• Wie funktioniert Suche nach einer Zeichenfolge in einem Text?• Wie wird Auto-Vervollstandigung in Entwicklungsumgebungen realisiert?• Woher weiß ein email client, ob eine Emailadresse valide ist?
⇒ Da sind regulare Ausdrucke im Spiel
regulare Ausdrucke = regular expressions = regex
Unterbau: Formale Sprachen (Theoretische Informatik)
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 166
![Page 31: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/31.jpg)
Formale Sprachen
Syntax• Jede Sprache (naturliche und formale) hat Regeln.• Fur einen Text lasst sich feststellen, ob er zu einer Sprache gehort:
• Deutsch: Die Fans befinden sich im Stadion.• Python: print "Hello World"
• Eine Grammatik beschreibt, nach welchen Regeln eine Sprachesyntaktisch aufgebaut ist.
• Bei einer Programmiersprache pruft der Compiler/Interpreter die Syntax.
Semantik• Auch bei grammatikalisch korrektem Aufbau kann ein Text sinnlos sein
• Deutsch: Das Stadion befindet sich in den Fans.• Python: print "sin(x) = %f"% cos(x)
• Eine Semantik-Korrektur fur Programmiersprachen gibt es noch nicht.
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 167
![Page 32: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/32.jpg)
Formale Sprachen
Syntax• Jede Sprache (naturliche und formale) hat Regeln.• Fur einen Text lasst sich feststellen, ob er zu einer Sprache gehort:
• Deutsch: Die Fans befinden sich im Stadion.• Python: print "Hello World"
• Eine Grammatik beschreibt, nach welchen Regeln eine Sprachesyntaktisch aufgebaut ist.
• Bei einer Programmiersprache pruft der Compiler/Interpreter die Syntax.Semantik• Auch bei grammatikalisch korrektem Aufbau kann ein Text sinnlos sein
• Deutsch: Das Stadion befindet sich in den Fans.• Python: print "sin(x) = %f"% cos(x)
• Eine Semantik-Korrektur fur Programmiersprachen gibt es noch nicht.
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 167
![Page 33: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/33.jpg)
Formale Grammatik
• Eine formale Grammatik ist ein 4-Tupel G = (V ,Σ,P,S)
• V ist eine endliche Menge, das Vokabular• Σ ⊂ V ist das Alphabet, die Elemente heißen Terminalsymbole
(”Student“, ”Vorlesung“; a, b, ...)• N = V\Σ sind die Nichtterminalsymbole/Variablen (<Subjekt>, <Verb>;
A, B, ...)• X ∗ ist die Kleensche Hulle der Menge X . Enthalt beliebige
Konkatenationen von Elementen aus der Menge.• P ⊂ (V ∗\Σ∗)xV ∗ ist die Menge der Produktionsregeln. Uberfuhrung
eines Wortes/Texts R, das mindestens ein Nichtterminal enthalt(R ∈ V ∗\Σ∗) in ein beliebiges Wort Q ∈ V ∗
<Subj ><Verb ><Obj > --> Der Student <Verb ><Obj >
AB --> AaB
• S ∈ (V\Σ) ist das Startsymbol
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 168
![Page 34: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/34.jpg)
Formale Grammatik
• Eine formale Grammatik ist ein 4-Tupel G = (V ,Σ,P,S)
• V ist eine endliche Menge, das Vokabular
• Σ ⊂ V ist das Alphabet, die Elemente heißen Terminalsymbole(”Student“, ”Vorlesung“; a, b, ...)
• N = V\Σ sind die Nichtterminalsymbole/Variablen (<Subjekt>, <Verb>;A, B, ...)
• X ∗ ist die Kleensche Hulle der Menge X . Enthalt beliebigeKonkatenationen von Elementen aus der Menge.
• P ⊂ (V ∗\Σ∗)xV ∗ ist die Menge der Produktionsregeln. Uberfuhrungeines Wortes/Texts R, das mindestens ein Nichtterminal enthalt(R ∈ V ∗\Σ∗) in ein beliebiges Wort Q ∈ V ∗
<Subj ><Verb ><Obj > --> Der Student <Verb ><Obj >
AB --> AaB
• S ∈ (V\Σ) ist das Startsymbol
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 168
![Page 35: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/35.jpg)
Formale Grammatik
• Eine formale Grammatik ist ein 4-Tupel G = (V ,Σ,P,S)
• V ist eine endliche Menge, das Vokabular• Σ ⊂ V ist das Alphabet, die Elemente heißen Terminalsymbole
(”Student“, ”Vorlesung“; a, b, ...)
• N = V\Σ sind die Nichtterminalsymbole/Variablen (<Subjekt>, <Verb>;A, B, ...)
• X ∗ ist die Kleensche Hulle der Menge X . Enthalt beliebigeKonkatenationen von Elementen aus der Menge.
• P ⊂ (V ∗\Σ∗)xV ∗ ist die Menge der Produktionsregeln. Uberfuhrungeines Wortes/Texts R, das mindestens ein Nichtterminal enthalt(R ∈ V ∗\Σ∗) in ein beliebiges Wort Q ∈ V ∗
<Subj ><Verb ><Obj > --> Der Student <Verb ><Obj >
AB --> AaB
• S ∈ (V\Σ) ist das Startsymbol
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 168
![Page 36: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/36.jpg)
Formale Grammatik
• Eine formale Grammatik ist ein 4-Tupel G = (V ,Σ,P,S)
• V ist eine endliche Menge, das Vokabular• Σ ⊂ V ist das Alphabet, die Elemente heißen Terminalsymbole
(”Student“, ”Vorlesung“; a, b, ...)• N = V\Σ sind die Nichtterminalsymbole/Variablen (<Subjekt>, <Verb>;
A, B, ...)
• X ∗ ist die Kleensche Hulle der Menge X . Enthalt beliebigeKonkatenationen von Elementen aus der Menge.
• P ⊂ (V ∗\Σ∗)xV ∗ ist die Menge der Produktionsregeln. Uberfuhrungeines Wortes/Texts R, das mindestens ein Nichtterminal enthalt(R ∈ V ∗\Σ∗) in ein beliebiges Wort Q ∈ V ∗
<Subj ><Verb ><Obj > --> Der Student <Verb ><Obj >
AB --> AaB
• S ∈ (V\Σ) ist das Startsymbol
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 168
![Page 37: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/37.jpg)
Formale Grammatik
• Eine formale Grammatik ist ein 4-Tupel G = (V ,Σ,P,S)
• V ist eine endliche Menge, das Vokabular• Σ ⊂ V ist das Alphabet, die Elemente heißen Terminalsymbole
(”Student“, ”Vorlesung“; a, b, ...)• N = V\Σ sind die Nichtterminalsymbole/Variablen (<Subjekt>, <Verb>;
A, B, ...)• X ∗ ist die Kleensche Hulle der Menge X . Enthalt beliebige
Konkatenationen von Elementen aus der Menge.
• P ⊂ (V ∗\Σ∗)xV ∗ ist die Menge der Produktionsregeln. Uberfuhrungeines Wortes/Texts R, das mindestens ein Nichtterminal enthalt(R ∈ V ∗\Σ∗) in ein beliebiges Wort Q ∈ V ∗
<Subj ><Verb ><Obj > --> Der Student <Verb ><Obj >
AB --> AaB
• S ∈ (V\Σ) ist das Startsymbol
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 168
![Page 38: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/38.jpg)
Formale Grammatik
• Eine formale Grammatik ist ein 4-Tupel G = (V ,Σ,P,S)
• V ist eine endliche Menge, das Vokabular• Σ ⊂ V ist das Alphabet, die Elemente heißen Terminalsymbole
(”Student“, ”Vorlesung“; a, b, ...)• N = V\Σ sind die Nichtterminalsymbole/Variablen (<Subjekt>, <Verb>;
A, B, ...)• X ∗ ist die Kleensche Hulle der Menge X . Enthalt beliebige
Konkatenationen von Elementen aus der Menge.• P ⊂ (V ∗\Σ∗)xV ∗ ist die Menge der Produktionsregeln. Uberfuhrung
eines Wortes/Texts R, das mindestens ein Nichtterminal enthalt(R ∈ V ∗\Σ∗) in ein beliebiges Wort Q ∈ V ∗
<Subj ><Verb ><Obj > --> Der Student <Verb ><Obj >
AB --> AaB
• S ∈ (V\Σ) ist das Startsymbol
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 168
![Page 39: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/39.jpg)
Formale Grammatik
• Eine formale Grammatik ist ein 4-Tupel G = (V ,Σ,P,S)
• V ist eine endliche Menge, das Vokabular• Σ ⊂ V ist das Alphabet, die Elemente heißen Terminalsymbole
(”Student“, ”Vorlesung“; a, b, ...)• N = V\Σ sind die Nichtterminalsymbole/Variablen (<Subjekt>, <Verb>;
A, B, ...)• X ∗ ist die Kleensche Hulle der Menge X . Enthalt beliebige
Konkatenationen von Elementen aus der Menge.• P ⊂ (V ∗\Σ∗)xV ∗ ist die Menge der Produktionsregeln. Uberfuhrung
eines Wortes/Texts R, das mindestens ein Nichtterminal enthalt(R ∈ V ∗\Σ∗) in ein beliebiges Wort Q ∈ V ∗
<Subj ><Verb ><Obj > --> Der Student <Verb ><Obj >
AB --> AaB
• S ∈ (V\Σ) ist das Startsymbol
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 168
![Page 40: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/40.jpg)
Chomsky-Hierarchie• Eingefuhrt von Noam Chomsky• Eine Hierarchie von Klassen formaler Grammatiken
Typ 0: unbeschrankte Grammatik• enthalt alle formalen Grammatiken• zugehorige Sprache wird von Turingmaschine akzeptiert
Typ 1: kontextsensitive Grammatik• Produktionsregeln der Form αBγ → αβγ (B Nichtterminal, griechische
Buchstaben Worte aus V ∗)• Sprache wird von linear beschrankter Turingmaschine erkannt
Typ 2: kontextfreie Grammatik• Produktionsregeln der Form A→ α• erkannt von Kellerautomat, Programmiersprachen sind Typ 2
Typ 3: regulare Grammatik• Produktionsregeln der Form A→ a und A→ aB• erkannt durch endliche Automaten / regulare Ausdrucke
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 169
![Page 41: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/41.jpg)
Regulare Grammatik der Exponentialzahlen• Einschrankende Annahmen:
• Beide Vorzeichen (Anfang+Exponent) zwingend anzugeben• Genau eine Vor- und mindestens eine Nachkommastelle
• G = (V ,Σ,P,S)• V = Σ ∪ N• N = S,M,N1,P,N2,E1,E2• Σ = −,+,0,1,2,3,4,5,6,7,8,9, .,e• Platzhalter: z ∈ {0− 9}
Produktionsregeln (rechts Beispiel: -3.81e-11)
S -> -M S -> +M | S -> -M
M -> zP | -> -3P
P -> .N1 | -> -3.N1
N1 -> zN2 | -> -3.8N2
N2 -> zN2 N2 -> eE1 | -> -3.81N2 -> -3.81eE1
E1 -> -E2 E1 -> +E2 | -> -3.81e-E2
E2 -> zE2 E2 -> z | -> -3.81e-1E2 -> -3.81e-11
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 170
![Page 42: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/42.jpg)
Regulare Grammatik der Exponentialzahlen• Einschrankende Annahmen:
• Beide Vorzeichen (Anfang+Exponent) zwingend anzugeben• Genau eine Vor- und mindestens eine Nachkommastelle
• G = (V ,Σ,P,S)• V = Σ ∪ N• N = S,M,N1,P,N2,E1,E2• Σ = −,+,0,1,2,3,4,5,6,7,8,9, .,e• Platzhalter: z ∈ {0− 9}
Produktionsregeln (rechts Beispiel: -3.81e-11)
S -> -M S -> +M | S -> -M
M -> zP | -> -3P
P -> .N1 | -> -3.N1
N1 -> zN2 | -> -3.8N2
N2 -> zN2 N2 -> eE1 | -> -3.81N2 -> -3.81eE1
E1 -> -E2 E1 -> +E2 | -> -3.81e-E2
E2 -> zE2 E2 -> z | -> -3.81e-1E2 -> -3.81e-11
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 170
![Page 43: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/43.jpg)
Regulare Sprachen und Ausdrucke???Die Menge der regularen Sprachen uber einem Alphabet Σ und diezugehorigen regularen Ausdrucke sind rekursiv definiert:• Die leere Sprache Ø ist eine regulare Sprache und der zugehorige
regulare Ausdruck ist Ø.• Der leere String {∧} ist eine regulare Sprache und der zugehorige
regulare Ausdruck ist ∧.
• Fur jedes a in Σ, ist die einelementige Sprache { a } eine regulareSprache und der zugehorige regulare Ausdruck ist a
• Wenn A und B regulare Sprachen sind mit zugehorigen regularenAudrucken r1 and r2, dann
• ist A ∪ B (Vereinigung) eine regulare Sprache und der zugehorigeregulare Ausdruck ist (r1|r2)
• ist AB (Verknupfung) eine regulare Sprache und der zugehorigeregulare Ausdruck ist (r1r2)
• ist A∗ (Kleene star) eine regulare Sprache und der zugehorigeregulare Ausdruck ist (r1∗)
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 171
![Page 44: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/44.jpg)
Regulare Sprachen und Ausdrucke???Die Menge der regularen Sprachen uber einem Alphabet Σ und diezugehorigen regularen Ausdrucke sind rekursiv definiert:• Die leere Sprache Ø ist eine regulare Sprache und der zugehorige
regulare Ausdruck ist Ø.• Der leere String {∧} ist eine regulare Sprache und der zugehorige
regulare Ausdruck ist ∧.• Fur jedes a in Σ, ist die einelementige Sprache { a } eine regulare
Sprache und der zugehorige regulare Ausdruck ist a
• Wenn A und B regulare Sprachen sind mit zugehorigen regularenAudrucken r1 and r2, dann
• ist A ∪ B (Vereinigung) eine regulare Sprache und der zugehorigeregulare Ausdruck ist (r1|r2)
• ist AB (Verknupfung) eine regulare Sprache und der zugehorigeregulare Ausdruck ist (r1r2)
• ist A∗ (Kleene star) eine regulare Sprache und der zugehorigeregulare Ausdruck ist (r1∗)
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 171
![Page 45: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/45.jpg)
Regulare Sprachen und Ausdrucke???Die Menge der regularen Sprachen uber einem Alphabet Σ und diezugehorigen regularen Ausdrucke sind rekursiv definiert:• Die leere Sprache Ø ist eine regulare Sprache und der zugehorige
regulare Ausdruck ist Ø.• Der leere String {∧} ist eine regulare Sprache und der zugehorige
regulare Ausdruck ist ∧.• Fur jedes a in Σ, ist die einelementige Sprache { a } eine regulare
Sprache und der zugehorige regulare Ausdruck ist a• Wenn A und B regulare Sprachen sind mit zugehorigen regularen
Audrucken r1 and r2, dann• ist A ∪ B (Vereinigung) eine regulare Sprache und der zugehorige
regulare Ausdruck ist (r1|r2)• ist AB (Verknupfung) eine regulare Sprache und der zugehorige
regulare Ausdruck ist (r1r2)• ist A∗ (Kleene star) eine regulare Sprache und der zugehorige
regulare Ausdruck ist (r1∗)
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 171
![Page 46: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/46.jpg)
Regularer Ausdruck fur Exponentialzahlen• Es gibt unendlich viele Sprachen uber jedem endlichen nichtleeren
Alphabet• z.B. fur Σ = {a} sind Sprachen: {}, {a}, {aa}, {a,aa}, {aaa}, ...
• Wir wollen zeigen, dass sich die Sprache der Exponentialzahlen und derzugehorige regulare Ausdruck rekursiv herleiten lassen
• Alphabet: {−,+,0,1,2,3,4,5,6,7,8,9, .,e}• Einelementige Sprachen: S− = {−}, S+ = {+}, S0 = {0}, S1 = {1}, ...,
S. = {.}, Se = {e}• zugehorige regularen Ausdrucke:
r− = −, r+ = +, r0 = 0, r1 = 1, ..., r. = ., re = e• Vereinigung zweier Sprachen:{a,b} ∪ {0,1,2} = {a,b,0,1,2} ⇒ |S1|+ |S2| Elemente
• Verknupfung zweier Sprachen:{a,b}{0,1,2} = {a0,a1,a2,b0,b1,b2} ⇒ |S1| · |S2| Elemente
• Kleensche Hulle einer Sprache:{0,1}∗ = {Ø,0,1,00,01,10,11,000, ...} ⇒ ∞ Elemente
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 172
![Page 47: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/47.jpg)
Regularer Ausdruck fur Exponentialzahlen• Es gibt unendlich viele Sprachen uber jedem endlichen nichtleeren
Alphabet• z.B. fur Σ = {a} sind Sprachen: {}, {a}, {aa}, {a,aa}, {aaa}, ...• Wir wollen zeigen, dass sich die Sprache der Exponentialzahlen und der
zugehorige regulare Ausdruck rekursiv herleiten lassen
• Alphabet: {−,+,0,1,2,3,4,5,6,7,8,9, .,e}• Einelementige Sprachen: S− = {−}, S+ = {+}, S0 = {0}, S1 = {1}, ...,
S. = {.}, Se = {e}• zugehorige regularen Ausdrucke:
r− = −, r+ = +, r0 = 0, r1 = 1, ..., r. = ., re = e• Vereinigung zweier Sprachen:{a,b} ∪ {0,1,2} = {a,b,0,1,2} ⇒ |S1|+ |S2| Elemente
• Verknupfung zweier Sprachen:{a,b}{0,1,2} = {a0,a1,a2,b0,b1,b2} ⇒ |S1| · |S2| Elemente
• Kleensche Hulle einer Sprache:{0,1}∗ = {Ø,0,1,00,01,10,11,000, ...} ⇒ ∞ Elemente
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 172
![Page 48: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/48.jpg)
Regularer Ausdruck fur Exponentialzahlen• Es gibt unendlich viele Sprachen uber jedem endlichen nichtleeren
Alphabet• z.B. fur Σ = {a} sind Sprachen: {}, {a}, {aa}, {a,aa}, {aaa}, ...• Wir wollen zeigen, dass sich die Sprache der Exponentialzahlen und der
zugehorige regulare Ausdruck rekursiv herleiten lassen• Alphabet: {−,+,0,1,2,3,4,5,6,7,8,9, .,e}• Einelementige Sprachen: S− = {−}, S+ = {+}, S0 = {0}, S1 = {1}, ...,
S. = {.}, Se = {e}• zugehorige regularen Ausdrucke:
r− = −, r+ = +, r0 = 0, r1 = 1, ..., r. = ., re = e
• Vereinigung zweier Sprachen:{a,b} ∪ {0,1,2} = {a,b,0,1,2} ⇒ |S1|+ |S2| Elemente
• Verknupfung zweier Sprachen:{a,b}{0,1,2} = {a0,a1,a2,b0,b1,b2} ⇒ |S1| · |S2| Elemente
• Kleensche Hulle einer Sprache:{0,1}∗ = {Ø,0,1,00,01,10,11,000, ...} ⇒ ∞ Elemente
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 172
![Page 49: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/49.jpg)
Regularer Ausdruck fur Exponentialzahlen• Es gibt unendlich viele Sprachen uber jedem endlichen nichtleeren
Alphabet• z.B. fur Σ = {a} sind Sprachen: {}, {a}, {aa}, {a,aa}, {aaa}, ...• Wir wollen zeigen, dass sich die Sprache der Exponentialzahlen und der
zugehorige regulare Ausdruck rekursiv herleiten lassen• Alphabet: {−,+,0,1,2,3,4,5,6,7,8,9, .,e}• Einelementige Sprachen: S− = {−}, S+ = {+}, S0 = {0}, S1 = {1}, ...,
S. = {.}, Se = {e}• zugehorige regularen Ausdrucke:
r− = −, r+ = +, r0 = 0, r1 = 1, ..., r. = ., re = e• Vereinigung zweier Sprachen:{a,b} ∪ {0,1,2} = {a,b,0,1,2} ⇒ |S1|+ |S2| Elemente
• Verknupfung zweier Sprachen:{a,b}{0,1,2} = {a0,a1,a2,b0,b1,b2} ⇒ |S1| · |S2| Elemente
• Kleensche Hulle einer Sprache:{0,1}∗ = {Ø,0,1,00,01,10,11,000, ...} ⇒ ∞ Elemente
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 172
![Page 50: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/50.jpg)
Erzeugung weiterer Sprachen aus den einelementigenOperation Sprache AusdruckS− ∪ S+ SA = {−,+} rA = (−|+)S0 ∪ S1∪ SB = {0, 1, ..., 9} rB = (0|1|...|9) = (0− 9)SASBS. SC = {−0., ...,−9., ...} rC = (−|+)(0− 9).SCSB SD = {−0.0,−0.1, ...} rD = (−|+)(0− 9).(0− 9)SDS∗
B SE = {−0.0,−0.00, ...} rE = (−|+)(0− 9).(0− 9)(0− 9)∗
rE = (−|+)(0− 9).(0− 9)+
SE Se SF = {−0.0e, ...} rF = (−|+)(0− 9).(0− 9)+eSF SA SG = {−0.0e−, ...} rG = (−|+)(0− 9).(0− 9)+e(−|+)SF SB SH = {−0.0e − 0, ...} rH = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)SHS∗
B SI = {−0.0e − 00, ...} rI = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)+
• SI ist genau die Sprache der Exponentialzahlen, fur die bereits eineGrammatik erstellt wurde
• rI = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)+ ist der zugehorige regulareAusdruck
• in Python: rI = r’[-+][0-9]\.[0-9]+e[-+][0-9]+’
• noch kurzer: rI = r’[-+]\d\.\d+e[-+]\d+’
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 173
![Page 51: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/51.jpg)
Erzeugung weiterer Sprachen aus den einelementigenOperation Sprache AusdruckS− ∪ S+ SA = {−,+} rA = (−|+)S0 ∪ S1∪ SB = {0, 1, ..., 9} rB = (0|1|...|9) = (0− 9)SASBS. SC = {−0., ...,−9., ...} rC = (−|+)(0− 9).SCSB SD = {−0.0,−0.1, ...} rD = (−|+)(0− 9).(0− 9)SDS∗
B SE = {−0.0,−0.00, ...} rE = (−|+)(0− 9).(0− 9)(0− 9)∗
rE = (−|+)(0− 9).(0− 9)+
SE Se SF = {−0.0e, ...} rF = (−|+)(0− 9).(0− 9)+eSF SA SG = {−0.0e−, ...} rG = (−|+)(0− 9).(0− 9)+e(−|+)SF SB SH = {−0.0e − 0, ...} rH = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)SHS∗
B SI = {−0.0e − 00, ...} rI = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)+
• SI ist genau die Sprache der Exponentialzahlen, fur die bereits eineGrammatik erstellt wurde
• rI = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)+ ist der zugehorige regulareAusdruck
• in Python: rI = r’[-+][0-9]\.[0-9]+e[-+][0-9]+’
• noch kurzer: rI = r’[-+]\d\.\d+e[-+]\d+’
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 173
![Page 52: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/52.jpg)
Erzeugung weiterer Sprachen aus den einelementigenOperation Sprache AusdruckS− ∪ S+ SA = {−,+} rA = (−|+)S0 ∪ S1∪ SB = {0, 1, ..., 9} rB = (0|1|...|9) = (0− 9)SASBS. SC = {−0., ...,−9., ...} rC = (−|+)(0− 9).SCSB SD = {−0.0,−0.1, ...} rD = (−|+)(0− 9).(0− 9)SDS∗
B SE = {−0.0,−0.00, ...} rE = (−|+)(0− 9).(0− 9)(0− 9)∗
rE = (−|+)(0− 9).(0− 9)+
SE Se SF = {−0.0e, ...} rF = (−|+)(0− 9).(0− 9)+eSF SA SG = {−0.0e−, ...} rG = (−|+)(0− 9).(0− 9)+e(−|+)SF SB SH = {−0.0e − 0, ...} rH = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)SHS∗
B SI = {−0.0e − 00, ...} rI = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)+
• SI ist genau die Sprache der Exponentialzahlen, fur die bereits eineGrammatik erstellt wurde
• rI = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)+ ist der zugehorige regulareAusdruck
• in Python: rI = r’[-+][0-9]\.[0-9]+e[-+][0-9]+’
• noch kurzer: rI = r’[-+]\d\.\d+e[-+]\d+’
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 173
![Page 53: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/53.jpg)
Erzeugung weiterer Sprachen aus den einelementigenOperation Sprache AusdruckS− ∪ S+ SA = {−,+} rA = (−|+)S0 ∪ S1∪ SB = {0, 1, ..., 9} rB = (0|1|...|9) = (0− 9)SASBS. SC = {−0., ...,−9., ...} rC = (−|+)(0− 9).SCSB SD = {−0.0,−0.1, ...} rD = (−|+)(0− 9).(0− 9)SDS∗
B SE = {−0.0,−0.00, ...} rE = (−|+)(0− 9).(0− 9)(0− 9)∗
rE = (−|+)(0− 9).(0− 9)+
SE Se SF = {−0.0e, ...} rF = (−|+)(0− 9).(0− 9)+eSF SA SG = {−0.0e−, ...} rG = (−|+)(0− 9).(0− 9)+e(−|+)SF SB SH = {−0.0e − 0, ...} rH = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)SHS∗
B SI = {−0.0e − 00, ...} rI = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)+
• SI ist genau die Sprache der Exponentialzahlen, fur die bereits eineGrammatik erstellt wurde
• rI = (−|+)(0− 9).(0− 9)+e(−|+)(0− 9)+ ist der zugehorige regulareAusdruck
• in Python: rI = r’[-+][0-9]\.[0-9]+e[-+][0-9]+’
• noch kurzer: rI = r’[-+]\d\.\d+e[-+]\d+’
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 173
![Page 54: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/54.jpg)
Regulare Ausdrucke!!!What does all this mean to you, as a user? Absolutely nothing. As a user, youdon’t care if it’s regular, nonregular, unregular, irregular, or incontinent. Solong as you know what you can expect from it, you know all you need to careabout. — Jeffrey Friedl
Wo fast jeder sie schon verwendet hat:• Suche nach einer Zeichenfolge in einem Text• Tabulator-Vervollstandigung• Mit * eine Gruppe von Dateien auszuwahlen (*.txt)
Einschrankungen• Fur Anfanger sehr kryptisch• Nach reiner Lehre ”Zahlen“ nicht moglich (z.B. anbn geht nicht)
Vorteile• Sehr nutzliches Werkzeug zum Finden von Pattern• Vergleichbare ”manuelle“ Implementierung viel aufwandiger• Python hat Erweiterungen, die sogar ”Zahlen“ ermoglichen
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 174
![Page 55: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/55.jpg)
Regulare Ausdrucke!!!What does all this mean to you, as a user? Absolutely nothing. As a user, youdon’t care if it’s regular, nonregular, unregular, irregular, or incontinent. Solong as you know what you can expect from it, you know all you need to careabout. — Jeffrey FriedlWo fast jeder sie schon verwendet hat:• Suche nach einer Zeichenfolge in einem Text• Tabulator-Vervollstandigung• Mit * eine Gruppe von Dateien auszuwahlen (*.txt)
Einschrankungen• Fur Anfanger sehr kryptisch• Nach reiner Lehre ”Zahlen“ nicht moglich (z.B. anbn geht nicht)
Vorteile• Sehr nutzliches Werkzeug zum Finden von Pattern• Vergleichbare ”manuelle“ Implementierung viel aufwandiger• Python hat Erweiterungen, die sogar ”Zahlen“ ermoglichen
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 174
![Page 56: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/56.jpg)
Regulare Ausdrucke!!!What does all this mean to you, as a user? Absolutely nothing. As a user, youdon’t care if it’s regular, nonregular, unregular, irregular, or incontinent. Solong as you know what you can expect from it, you know all you need to careabout. — Jeffrey FriedlWo fast jeder sie schon verwendet hat:• Suche nach einer Zeichenfolge in einem Text• Tabulator-Vervollstandigung• Mit * eine Gruppe von Dateien auszuwahlen (*.txt)
Einschrankungen• Fur Anfanger sehr kryptisch• Nach reiner Lehre ”Zahlen“ nicht moglich (z.B. anbn geht nicht)
Vorteile• Sehr nutzliches Werkzeug zum Finden von Pattern• Vergleichbare ”manuelle“ Implementierung viel aufwandiger• Python hat Erweiterungen, die sogar ”Zahlen“ ermoglichen
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 174
![Page 57: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/57.jpg)
Regulare Ausdrucke!!!What does all this mean to you, as a user? Absolutely nothing. As a user, youdon’t care if it’s regular, nonregular, unregular, irregular, or incontinent. Solong as you know what you can expect from it, you know all you need to careabout. — Jeffrey FriedlWo fast jeder sie schon verwendet hat:• Suche nach einer Zeichenfolge in einem Text• Tabulator-Vervollstandigung• Mit * eine Gruppe von Dateien auszuwahlen (*.txt)
Einschrankungen• Fur Anfanger sehr kryptisch• Nach reiner Lehre ”Zahlen“ nicht moglich (z.B. anbn geht nicht)
Vorteile• Sehr nutzliches Werkzeug zum Finden von Pattern• Vergleichbare ”manuelle“ Implementierung viel aufwandiger• Python hat Erweiterungen, die sogar ”Zahlen“ ermoglichen
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 174
![Page 58: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/58.jpg)
Regulare Ausdrucke in PythonPattern Syntax• Regulare Ausdrucke immer als ”raw string“• Z.B. r’([0-9]*\.[0-9]*|[0-9]*)’
. entspricht beliebigem Zeichen außer newline^ entspricht dem Beginn eines strings$ entspricht dem Ende eines strings* voriger Ausdruck beliebig oft (inkl. null mal) (gierig)+ voriger Ausdruck beliebig oft (exkl. null mal) (gierig)? voriger Ausdruck null- oder einmal (gierig)*?, +?, ?? nicht gierige Versionen von *, +, ?
{m} voriger Ausdruck genau m mal{m,n} voriger Ausdruck m bis n mal (gierig){m,n}? nicht gierige Version von {m,n}[...] ein beliebiges Zeichen aus der Menge (...)[^...] ein beliebiges Zeichen, das nicht in der Menge istA|B A oder B (A und B sind regulare Ausdrucke)(...) speichert den gefundenen Inhalt der Klammern
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 175
![Page 59: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/59.jpg)
Regulare Ausdrucke in PythonPattern Syntax• Regulare Ausdrucke immer als ”raw string“• Z.B. r’([0-9]*\.[0-9]*|[0-9]*)’. entspricht beliebigem Zeichen außer newline^ entspricht dem Beginn eines strings$ entspricht dem Ende eines strings* voriger Ausdruck beliebig oft (inkl. null mal) (gierig)+ voriger Ausdruck beliebig oft (exkl. null mal) (gierig)? voriger Ausdruck null- oder einmal (gierig)*?, +?, ?? nicht gierige Versionen von *, +, ?
{m} voriger Ausdruck genau m mal{m,n} voriger Ausdruck m bis n mal (gierig){m,n}? nicht gierige Version von {m,n}[...] ein beliebiges Zeichen aus der Menge (...)[^...] ein beliebiges Zeichen, das nicht in der Menge istA|B A oder B (A und B sind regulare Ausdrucke)(...) speichert den gefundenen Inhalt der Klammern
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 175
![Page 60: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/60.jpg)
Regulare Ausdrucke - Maskierungszeichen
• Zeichen mit einer speziellen Bedeutung (., *, etc.) konnen mit ihrereigentlichen Bedeutung durch voranstellen eines \verwendet werden,z.B. \., \*
• Normale Maskierungszeichen (\n, \t, etc.) funktionieren wie erwartet,z.B. r’\n+’ entspricht einem oder mehreren Zeilenumbruchen
\number enspricht dem n-ten zuvor gefundenen Text (von 1 beginnend)\d entspricht [0-9]\D entspricht [^0-9]\s enspricht beliebigem whitespace (= [\t\n\r\f\v])\S alles außer whitespace\w beliebiges alphanumerisches Zeichen (= [a-zA-Z0-9 ])\W beliebiges nicht-alphanumerisches Zeichen\A entspricht dem Beginn eines strings\Z entspricht dem Ende eines strings
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 176
![Page 61: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/61.jpg)
Regulare Ausdrucke - Maskierungszeichen
• Zeichen mit einer speziellen Bedeutung (., *, etc.) konnen mit ihrereigentlichen Bedeutung durch voranstellen eines \verwendet werden,z.B. \., \*
• Normale Maskierungszeichen (\n, \t, etc.) funktionieren wie erwartet,z.B. r’\n+’ entspricht einem oder mehreren Zeilenumbruchen
\number enspricht dem n-ten zuvor gefundenen Text (von 1 beginnend)\d entspricht [0-9]\D entspricht [^0-9]\s enspricht beliebigem whitespace (= [\t\n\r\f\v])\S alles außer whitespace\w beliebiges alphanumerisches Zeichen (= [a-zA-Z0-9 ])\W beliebiges nicht-alphanumerisches Zeichen\A entspricht dem Beginn eines strings\Z entspricht dem Ende eines strings
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 176
![Page 62: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/62.jpg)
Regulare Ausdrucke - Maskierungszeichen
• Zeichen mit einer speziellen Bedeutung (., *, etc.) konnen mit ihrereigentlichen Bedeutung durch voranstellen eines \verwendet werden,z.B. \., \*
• Normale Maskierungszeichen (\n, \t, etc.) funktionieren wie erwartet,z.B. r’\n+’ entspricht einem oder mehreren Zeilenumbruchen
\number enspricht dem n-ten zuvor gefundenen Text (von 1 beginnend)\d entspricht [0-9]\D entspricht [^0-9]\s enspricht beliebigem whitespace (= [\t\n\r\f\v])\S alles außer whitespace\w beliebiges alphanumerisches Zeichen (= [a-zA-Z0-9 ])\W beliebiges nicht-alphanumerisches Zeichen\A entspricht dem Beginn eines strings\Z entspricht dem Ende eines strings
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 176
![Page 63: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/63.jpg)
Beispiele (1)Modul re:findall(patt, string) – finde alle nicht uberlappenden Vorkommen von patt
in string
\d entspricht [0-9]+ voriger Ausdruck beliebig oft (excl. Null mal) (gierig)A|B A oder B (A und B sind regulare Ausdrucke)
import re
regstr = r’\d+\.\d+|\d+’
s = "12.3/5/4.4;5.7;6"
re.findall(regstr ,s)
→ Finde n ≥ 1 Ziffern, einen “.” und weitere n ≥ 1 Ziffernodernur n ≥ 1 Ziffern
Hands-On: Was passiert fur regstr=r’\d+|\d+\.\d+’?Hands-On: Was passiert fur regstr=r’\d+.\d+|\d+’?
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 177
![Page 64: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/64.jpg)
Beispiele (1)Modul re:findall(patt, string) – finde alle nicht uberlappenden Vorkommen von patt
in string
\d entspricht [0-9]+ voriger Ausdruck beliebig oft (excl. Null mal) (gierig)A|B A oder B (A und B sind regulare Ausdrucke)
import re
regstr = r’\d+\.\d+|\d+’
s = "12.3/5/4.4;5.7;6"
re.findall(regstr ,s)
→ Finde n ≥ 1 Ziffern, einen “.” und weitere n ≥ 1 Ziffernodernur n ≥ 1 Ziffern
Hands-On: Was passiert fur regstr=r’\d+|\d+\.\d+’?Hands-On: Was passiert fur regstr=r’\d+.\d+|\d+’?
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 177
![Page 65: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/65.jpg)
Beispiele (1)Modul re:findall(patt, string) – finde alle nicht uberlappenden Vorkommen von patt
in string
\d entspricht [0-9]+ voriger Ausdruck beliebig oft (excl. Null mal) (gierig)A|B A oder B (A und B sind regulare Ausdrucke)
import re
regstr = r’\d+\.\d+|\d+’
s = "12.3/5/4.4;5.7;6"
re.findall(regstr ,s)
→ Finde n ≥ 1 Ziffern, einen “.” und weitere n ≥ 1 Ziffernodernur n ≥ 1 Ziffern
Hands-On: Was passiert fur regstr=r’\d+|\d+\.\d+’?
Hands-On: Was passiert fur regstr=r’\d+.\d+|\d+’?
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 177
![Page 66: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/66.jpg)
Beispiele (1)Modul re:findall(patt, string) – finde alle nicht uberlappenden Vorkommen von patt
in string
\d entspricht [0-9]+ voriger Ausdruck beliebig oft (excl. Null mal) (gierig)A|B A oder B (A und B sind regulare Ausdrucke)
import re
regstr = r’\d+\.\d+|\d+’
s = "12.3/5/4.4;5.7;6"
re.findall(regstr ,s)
→ Finde n ≥ 1 Ziffern, einen “.” und weitere n ≥ 1 Ziffernodernur n ≥ 1 Ziffern
Hands-On: Was passiert fur regstr=r’\d+|\d+\.\d+’?Hands-On: Was passiert fur regstr=r’\d+.\d+|\d+’?T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 177
![Page 67: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/67.jpg)
Beispiele (2)
Modul re:sub(patt, repl, string) – ersetze Vorkommen von patt in string durch repl
\d entspricht [0-9]+ voriger Ausdruck beliebig oft (excl. Null mal) (gierig)(...) speichert den gefundenen Inhalt der Klammern\number enspricht dem n-ten zuvor gefundenen Text (von 1 beginnend)
regstr = r’(\d+\.\d+|\d+)’
re.sub(regstr , r’\1xxx’, s)
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 178
![Page 68: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/68.jpg)
Regulare Ausdrucke - gierig/greedy
• Was bedeutet gierig/nicht-gierig (bzw. greedy/non-greedy)?• Beispiel:
reg_greedy = r’<.*>’ #match as many chars as possible
s = "<H1 >title </H1 >"
re.findall(reg_greedy ,s) #whole ’<H1 >title </H1 >’ matched
reg_nongreedy = r’ <.*?>’ #match as few chars as possible
findall(reg_nongreedy ,s) #only ’<H1 >’ matched
• gierig/greedy: so viele Zeichen wie moglich gematched; nur, wenn dasschiefgehen wurde, gibt es ein backtracking durch die regex engine
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 179
![Page 69: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/69.jpg)
Regulare Ausdrucke - Match-Objekte
• Manche Funktionen aus re geben keine strings, sondern
”Match-Objekte“(m) zuruck• match(patt, string) Sucht nach Ubereinstimmung am Beginn des strings• search(patt, string) Sucht die erste Ubereinstimmung im string• finditer(patt, string) wie findall, gibt aber einen iterator zuruck• m.group(i) Gibt Ubereinstimmungsgruppe i zuruck (i ≥ 1)• m.groups() Gibt Tupel mit allen Ubereinstimmungsgruppen zuruck
import re
s = "Ferien 12/24/2010 - 01/06/2011"
patt = r’(\d+)/(\d+)/(\d+)’
for m in re.finditer(patt ,s):
print("%s.%s.%s" % (m.group(2), m.group(1), m.group (3)))
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 180
![Page 70: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/70.jpg)
Regulare Ausdrucke - Ratsel zu Primzahlen
Hands-On: Wieso “berechnet” folgender Code Primzahlen > 1?
import re
def isPrime(p):
m = re.search(r’^1?$|^(11+?)\1+$’, p)
if(m):
return False
else:
return True
for i in xrange (2 ,1024):
if(isPrime(’1’ * i)):
print i
→ Hausaufgabe :-)
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 181
![Page 71: Wiederholung: Klassen und Objekte · Python-Syntax Regul arer Ausdr¨ ucke¨ Lernziele Die Teilnehmer k onnen Beispiele f¨ ur den Nutzen und die Anwendung¨ Regul arer Ausdr¨ ucke](https://reader030.fdocument.pub/reader030/viewer/2022040715/5e1e16c4e6daee22d0287b6e/html5/thumbnails/71.jpg)
Regulare Ausdrucke - Ratsel zu Primzahlen
Hands-On: Wieso “berechnet” folgender Code Primzahlen > 1?
import re
def isPrime(p):
m = re.search(r’^1?$|^(11+?)\1+$’, p)
if(m):
return False
else:
return True
for i in xrange (2 ,1024):
if(isPrime(’1’ * i)):
print i
→ Hausaufgabe :-)
T. Neckel | Einfuhrung in die wissenschaftliche Programmierung | IN8008 | Wintersemester 2017/2018 181