From 5b03cf96198349fadc97864965e8cca93225d5e2 Mon Sep 17 00:00:00 2001 From: Michael Leuschel <leuschel@uni-duesseldorf.de> Date: Sun, 10 May 2020 08:52:45 +0200 Subject: [PATCH] add new notebook --- info4/kapitel-2/RegulaereAusdruecke.ipynb | 247 ++++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 info4/kapitel-2/RegulaereAusdruecke.ipynb diff --git a/info4/kapitel-2/RegulaereAusdruecke.ipynb b/info4/kapitel-2/RegulaereAusdruecke.ipynb new file mode 100644 index 0000000..b59b20a --- /dev/null +++ b/info4/kapitel-2/RegulaereAusdruecke.ipynb @@ -0,0 +1,247 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Reguläre Ausdrücke\n", + "\n", + "Sei $\\Sigma$ ein Alphabet. \n", + "Die __Menge der regulären Ausdrücke__ (\"uber\n", + " $\\Sigma$) ist definiert durch:\n", + "* $\\emptyset$ und $\\lambda$ sind reguläre Ausdr\"ucke.\n", + "* Jedes $a \\in \\Sigma$ ist ein regulärer Ausdruck.\n", + "* Sind $\\alpha$ und $\\beta$ reguläre Ausdr\"ucke, so sind auch \n", + " * $\\alpha \\beta$, \n", + " * $(\\alpha + \\beta)$ und \n", + " * $(\\alpha)^{\\ast}$ \n", + "* regul\"are Ausdrücke.\n", + "* Nichts sonst ist ein regulärer Ausdruck. \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: Regex" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE Regex\n", + "DEFINITIONS \"LibraryRegex.def\"\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine initialised using operation 0: $initialise_machine()" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":init" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in 3,\\mathit{position}\\in 1,\\mathit{string}\\in\\text{\"aab\"},\\mathit{submatches}\\in\\emptyset)$" + ], + "text/plain": [ + "rec(length∈3,position∈1,string∈\"aab\",submatches∈∅)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "REGEX_SEARCH(\"aabc\",1,\"a*b\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zum Experimentieren definieren wir einen Auszug aus dem Faust\n", + "(Quelle: The Project Gutenberg EBook of Faust: Der Tragödie erster Teil, by Johann Wolfgang von Goethe. Lizenz siehe www.gutenberg.net)." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\text{\"\\nFAUST:\\n Habe nun, ach! Philosophie,\\n Juristerei und Medizin,\\n Und leider auch Theologie\\n Durchaus studiert, mit heißem Bemühn.\\n Da steh ich nun, ich armer Tor!\\n Und bin so klug als wie zuvor;\\n Heiße Magister, heiße Doktor gar\\n Und ziehe schon an die zehen Jahr\\n Herauf, herab und quer und krumm\\n Meine Schüler an der Nase herum-\\n Und sehe, daß wir nichts wissen können!\\n Das will mir schier das Herz verbrennen.\\n Zwar bin ich gescheiter als all die Laffen,\\n Doktoren, Magister, Schreiber und Pfaffen;\\n Mich plagen keine Skrupel noch Zweifel,\\n Fürchte mich weder vor Hölle noch Teufel-\\n Dafür ist mir auch alle Freud entrissen,\\n Bilde mir nicht ein, was Rechts zu wissen,\\n Bilde mir nicht ein, ich könnte was lehren,\\n Die Menschen zu bessern und zu bekehren.\\n Auch hab ich weder Gut noch Geld,\\n Noch Ehr und Herrlichkeit der Welt;\\n Es möchte kein Hund so länger leben!\\n Drum hab ich mich der Magie ergeben,\\n Ob mir durch Geistes Kraft und Mund\\n Nicht manch Geheimnis würde kund;\\n Daß ich nicht mehr mit saurem Schweiß\\n Zu sagen brauche, was ich nicht weiß;\\n Daß ich erkenne, was die Welt\\n Im Innersten zusammenhält,\\n Schau alle Wirkenskraft und Samen,\\n Und tu nicht mehr in Worten kramen.\\n \"}$" + ], + "text/plain": [ + "\"\\nFAUST:\\n Habe nun, ach! Philosophie,\\n Juristerei und Medizin,\\n Und leider auch Theologie\\n Durchaus studiert, mit heißem Bemühn.\\n Da steh ich nun, ich armer Tor!\\n Und bin so klug als wie zuvor;\\n Heiße Magister, heiße Doktor gar\\n Und ziehe schon an die zehen Jahr\\n Herauf, herab und quer und krumm\\n Meine Schüler an der Nase herum-\\n Und sehe, daß wir nichts wissen können!\\n Das will mir schier das Herz verbrennen.\\n Zwar bin ich gescheiter als all die Laffen,\\n Doktoren, Magister, Schreiber und Pfaffen;\\n Mich plagen keine Skrupel noch Zweifel,\\n Fürchte mich weder vor Hölle noch Teufel-\\n Dafür ist mir auch alle Freud entrissen,\\n Bilde mir nicht ein, was Rechts zu wissen,\\n Bilde mir nicht ein, ich könnte was lehren,\\n Die Menschen zu bessern und zu bekehren.\\n Auch hab ich weder Gut noch Geld,\\n Noch Ehr und Herrlichkeit der Welt;\\n Es möchte kein Hund so länger leben!\\n Drum hab ich mich der Magie ergeben,\\n Ob mir durch Geistes Kraft und Mund\\n Nicht manch Geheimnis würde kund;\\n Daß ich nicht mehr mit saurem Schweiß\\n Zu sagen brauche, was ich nicht weiß;\\n Daß ich erkenne, was die Welt\\n Im Innersten zusammenhält,\\n Schau alle Wirkenskraft und Samen,\\n Und tu nicht mehr in Worten kramen.\\n \"" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":let txt '''\n", + "FAUST:\n", + " Habe nun, ach! Philosophie,\n", + " Juristerei und Medizin,\n", + " Und leider auch Theologie\n", + " Durchaus studiert, mit heißem Bemühn.\n", + " Da steh ich nun, ich armer Tor!\n", + " Und bin so klug als wie zuvor;\n", + " Heiße Magister, heiße Doktor gar\n", + " Und ziehe schon an die zehen Jahr\n", + " Herauf, herab und quer und krumm\n", + " Meine Schüler an der Nase herum-\n", + " Und sehe, daß wir nichts wissen können!\n", + " Das will mir schier das Herz verbrennen.\n", + " Zwar bin ich gescheiter als all die Laffen,\n", + " Doktoren, Magister, Schreiber und Pfaffen;\n", + " Mich plagen keine Skrupel noch Zweifel,\n", + " Fürchte mich weder vor Hölle noch Teufel-\n", + " Dafür ist mir auch alle Freud entrissen,\n", + " Bilde mir nicht ein, was Rechts zu wissen,\n", + " Bilde mir nicht ein, ich könnte was lehren,\n", + " Die Menschen zu bessern und zu bekehren.\n", + " Auch hab ich weder Gut noch Geld,\n", + " Noch Ehr und Herrlichkeit der Welt;\n", + " Es möchte kein Hund so länger leben!\n", + " Drum hab ich mich der Magie ergeben,\n", + " Ob mir durch Geistes Kraft und Mund\n", + " Nicht manch Geheimnis würde kund;\n", + " Daß ich nicht mehr mit saurem Schweiß\n", + " Zu sagen brauche, was ich nicht weiß;\n", + " Daß ich erkenne, was die Welt\n", + " Im Innersten zusammenhält,\n", + " Schau alle Wirkenskraft und Samen,\n", + " Und tu nicht mehr in Worten kramen.\n", + " '''" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\{(1\\mapsto\\text{\"ich\"}),(2\\mapsto\\text{\"ich\"}),(3\\mapsto\\text{\"ich\"}),(4\\mapsto\\text{\"ich\"}),(5\\mapsto\\text{\"ich\"}),(6\\mapsto\\text{\"ich\"}),(7\\mapsto\\text{\"ich\"}),(8\\mapsto\\text{\"ich\"}),(9\\mapsto\\text{\"ich\"}),(10\\mapsto\\text{\"ich\"}),(11\\mapsto\\text{\"ich\"}),(12\\mapsto\\text{\"ich\"}),(13\\mapsto\\text{\"ich\"}),(14\\mapsto\\text{\"ich\"}),(15\\mapsto\\text{\"ich\"}),(16\\mapsto\\text{\"ich\"}),(17\\mapsto\\text{\"ich\"}),(18\\mapsto\\text{\"ich\"}),(19\\mapsto\\text{\"ich\"}),(20\\mapsto\\text{\"ich\"})\\}$" + ], + "text/plain": [ + "{(1↦\"ich\"),(2↦\"ich\"),(3↦\"ich\"),(4↦\"ich\"),(5↦\"ich\"),(6↦\"ich\"),(7↦\"ich\"),(8↦\"ich\"),(9↦\"ich\"),(10↦\"ich\"),(11↦\"ich\"),(12↦\"ich\"),(13↦\"ich\"),(14↦\"ich\"),(15↦\"ich\"),(16↦\"ich\"),(17↦\"ich\"),(18↦\"ich\"),(19↦\"ich\"),(20↦\"ich\")}" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "REGEX_SEARCH_ALL(txt,\"ich\")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in 3,\\mathit{position}\\in 802,\\mathit{string}\\in\\text{\"Gut\"},\\mathit{submatches}\\in\\emptyset)$" + ], + "text/plain": [ + "rec(length∈3,position∈802,string∈\"Gut\",submatches∈∅)" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "REGEX_SEARCH(txt,1,\"G[a-z]*\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\{(1\\mapsto\\text{\"Gut\"}),(2\\mapsto\\text{\"Geld\"}),(3\\mapsto\\text{\"Geistes\"}),(4\\mapsto\\text{\"Geheimnis\"})\\}$" + ], + "text/plain": [ + "{(1↦\"Gut\"),(2↦\"Geld\"),(3↦\"Geistes\"),(4↦\"Geheimnis\")}" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "REGEX_SEARCH_ALL(txt,\"G[a-z]*\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ProB 2", + "language": "prob", + "name": "prob2" + }, + "language_info": { + "codemirror_mode": "prob2_jupyter_repl", + "file_extension": ".prob", + "mimetype": "text/x-prob2-jupyter-repl", + "name": "prob" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} -- GitLab