forked from kiersch/jura_regex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathregex_alternative.py
34 lines (25 loc) · 1.13 KB
/
regex_alternative.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
# Für Erläuterung der Regex siehe README.md
p = re.compile(r""" # Die Regex wird in p kompiliert
(§+|Art|Artikel)\.?\s*
(?P<norm>\d+(?:\w\b)?)\s*
(?:Abs\.\s*(?P<absatz>\d+(?:\w\b)?))?\s*
(?:S\.\s*(?P<satz>\d+))?\s*
(?:Nr\.\s*(?P<nr>\d+(?:\w\b)?))?\s*
(?:lit\.\s*(?P<lit>[a-z]?))?
.{0,10}?
(?P<gesetz>zpo|versg|egzpo)(?![\w-])
""", re.IGNORECASE | re.VERBOSE)
Teststring = """Hier zu überprüfenden Text einfügen"""
alle_treffer = p.finditer(Teststring) #Gibt einen Iterator zurück, der Match-Objekte auswirft
liste_der_treffer = ""
liste_der_gesetze = {} #Dictionary, sodass jedes Gesetz nur einmal erfasst wird
for treffer in alle_treffer:
liste_der_treffer = liste_der_treffer + "\t" + treffer.group() + "\n" #Group gibt ohne Argumente das gesamte Match zurück
liste_der_gesetze[treffer.group('gesetz')] = 0 # Wir brauchen nur das Gesetz als Key, Value kann 0 sein
print(f"Folgende Treffer gibt es:\n {liste_der_treffer}")
print(f"Im Einzelnen konnten die folgenden Gesetze erkannt werden:")
for x in liste_der_gesetze:
print(x + ' ')