RegExp für Gesetze

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • RegExp für Gesetze

    Hallo allerseits! :)

    Ich zermürbe mir schon seit mehreren Wochen den Kopf über einen RegExp den man einsetzen kann, um in Gesetzestexten
    die Paragraphen zu "extrahieren".

    Das Ganze soll also etwa wie hier:
    dejure.org/gesetze/StGB/138.html

    Die Paragraphen verlinken. Es soll aber auch neben dem Beispiel oben möglich sein in komplett andere Gesetze zu verlinken,
    also etwa was in Richtung "§ 311a BGB". Wobei das Gesetz hier "hard coded" im RegExp stehen würde, da man ja nur das verlinken
    will, was man auch hat.

    Beispiel hierfür wäre:
    hrr-strafrecht.de/hrr/4/07/4-180-07.php

    Das ganze sollte auch (zur not mittels Umstellung im RegExp) auch die Alternative Schreibweise a la "BGB § 311a" zulassen.

    Es geht Primär um die Paragraphen, d.h. Absätze oder Nummern sind VOLLKOMMNE irrelevant :)

    Mein Ansatz ist bisher:

    Quellcode

    1. /(§|§|Art\.)(§|§)?\s?([0-9]{1,4})\s?([a-z]\s|ff.|ff)?\s?(Abs.\s?([0-9]{1,2})|Abs\s?([0-9]{1,2})|[iv]{1,4}\s)?\s?(Nr.\s?([0-9]{1,2})|Nr\s?([0-9]{1,2}))?\s?(BGB|STGB|GG)?/



    Ich bin über jegliche Hinweise mehr als dankbar, weil ich kurz vor der vollkommenden Verzweiflung stehe ;)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von banshy ()

  • Hi banshy,

    ich glaube, daß Dein Problem schon vom Ansatz her so nicht zu lösen ist. Gerade die von Dir eingefügten Beispiellinks machen dies doch klar:

    [...] eines Landesverrats oder einer Gefährdung der äußeren Sicherheit in den Fällen der §§ 94 bis 96, 97a oder 100, [...]


    Der erste Link §§ 94 ist ja noch machbar, aber daß alle weiteren Nummern ebenfalls Paragraphen darstellen, erschließt sich dem Leser aus dem Satz, ist aber imho nicht sicher per RegEx erfassbar. Zahlenwerte kannst Du auch nicht pauschal als Paragraphen werten. Sähe interessant aus, wenn da stände: "[...] kann mit einem Strafmaß von bis zu 16 Jahren Haft geahndet werden."

    Markiere stattdessen die Paragraphen beim Einpflegen in die Website mit irgendwelchen Zeichen, z.B. {{97a}}. Diese dann in Links umzuwandeln, dürfte kein Problem darstellen.
    Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Jeder glaubt, er hätte genug davon.
    --------------------------------------------------(Rene Descartes)
  • McSush schrieb:

    Hi banshy,
    ich glaube, daß Dein Problem schon vom Ansatz her so nicht zu lösen ist. Gerade die von Dir eingefügten Beispiellinks machen dies doch klar:


    Das Problem wurde in kommerziellen Zusammenhang bereits gelöst, daher bin ich mir relativ sicher, dass man es mit einem RegExp auch lösen kann.
    Im übrigen haben die Paragraphen eigentlich immer ein bestimmtes Schema (logisch):

    (§|§§|Art.) ([0-9]{1,4}[a-z])(ff.|ff) (Abs. ([0-9]{1,2}) (Nr. ([0-9]{1,2})

    Und der Teil >([0-9]{1,4}[a-z])(ff.|ff) (Abs. ([0-9]{1,2}) (Nr. ([0-9]{1,2})< müsste eigentlich nur per Rekursion wiederholbar sein (verbunden etweder mit "-", "und", "oder", "bis") - eigentlich müsste das auch nur geprüft werden, wenn am Anfang ein §§ steht, da dies auf eine Paragraphenkette hinweisen würde.

    Das wäre die Lösung ;) Nur leider weiss ich weder ob es sowas wie Rekursion bei RegExps gibt geschweige denn, wie man das dann umsetzen könnte.
  • Mittlerweile bin ich wieder ein Stück weitergekommen:

    Quellcode

    1. (?i)(?:§|&sect;|Art\.|und|oder|bis|,)(?:§|&sect;)?\s?(?P<norm>[0-9]{1,4}[a-z]?)\s?(?:ff.|ff)?\s?(?:Abs.\s?(?:[0-9]{1,2})|Abs\s?(?:[0-9]{1,2})|[iv]{1,4}\s)?\s?(?:Nr.\s?(?:[0-9]{1,2})|Nr\s?(?:[0-9]{1,2}))?\s?(?P<gesetz>BGB|STGB|GG|STPO)?


    Leider werden auch Fälle wie § 123 Abs. 1 bis 5 und Abs. 7 gematched (also die "bis 5").