Skip to content
Snippets Groups Projects
uebung_regex.ipynb 3.7 KiB
Newer Older
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 12. Übungsblatt\n",
    "\n",
    "Mit diesem Python-Code können Sie Ihren regulären Ausdruck testen:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import re\n",
    "\n",
    "\"\"\"\n",
    "Ändern Sie den folgenden regulären Ausdruck, so dass alle \n",
    "positiven Muster erkannt werden, aber kein negatives Muster.\n",
    "\"\"\"\n",
Prof. Dr. Robert Jäschke's avatar
Prof. Dr. Robert Jäschke committed
    "muster = re.compile(\"Z\") \n",
    "positive = [\n",
    "    \"rap them\",\n",
    "    \"tapeth\",\n",
    "    \"apth\",\n",
    "    \"wrap/try\",\n",
    "    \"sap tray\",\n",
    "    \"87ap9th\",\n",
    "    \"apothecary\"\n",
    "]\n",
    "\n",
    "negative = [\n",
    "    \"aleht\",\n",
    "    \"happy them\",\n",
    "    \"tarpth\",\n",
    "    \"Apt\",\n",
    "    \"peth\",\n",
    "    \"tarreth\",\n",
    "    \"ddapdg\",\n",
    "    \"apples\",\n",
    "    \"shape the\"\n",
    "]\n",
    "\n",
    "# testen, ob alle positiven Muster richtig erkannt werden\n",
    "positive_not_matched = [s for s in positive if not muster.findall(s)]\n",
    "if positive_not_matched:\n",
Prof. Dr. Robert Jäschke's avatar
Prof. Dr. Robert Jäschke committed
    "    print(\"Folgende positiven Muster wurden nicht erkannt:\", \", \".join(positive_not_matched))\n",
    "\n",
    "# testen, ob keine negativen Muster erkannt werden\n",
    "negative_matched = [s for s in negative if muster.findall(s)]\n",
    "if negative_matched:\n",
Prof. Dr. Robert Jäschke's avatar
Prof. Dr. Robert Jäschke committed
    "    print(\"Folgende negativen Muster wurden erkannt:\", \", \".join(negative_matched))\n",
    "\n",
    "if not positive_not_matched and not negative_matched:\n",
    "    print(\"Herzlichen Glückwunsch, Sie haben das richtige Muster gefunden!\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Nachfolgend noch einige Beispiele zur Verwendung von regulären Ausdrücke mit Python:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Funktionen für reguläre Ausdrücke werden im Modul \"re\" bereitgestellt\n",
    "import re\n",
    "\n",
    "# die Methode \"findall\" findet alle Teilzeichenketten in einer Zeichenkette,\n",
    "# die auf das angegebene Muster passen \n",
    "re.findall(\"cat|dog\", \"This sentence contains a dog.\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# die Methode \"match\" testet, ob die gesamte Zeichenkette auf das angegebene Muster passt \n",
    "re.match(\".*dog\\\\.\", \"This sentence contains a dog.\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "re.match(\".*(cat|dog)\", \"This sentence contains a cat.\")"
Prof. Dr. Robert Jäschke's avatar
Prof. Dr. Robert Jäschke committed
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Mit \"match\" können wir beispielsweise unsere Ergebnisse für Aufgabe 1 prüfen:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "if re.match(\"[hc]?at\", \"cat\"):\n",
    "    print(\"Wort wurde erkannt\")\n",
    "else:\n",
    "    print(\"Wort wurde nicht erkannt\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Es gibt eine umfangreiche eingebaute Hilfe:\n",
    "help(re)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python",
   "pygments_lexer": "ipython3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}