-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathregex.py
34 lines (25 loc) · 1.03 KB
/
regex.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>\b[A-Z][A-Za-z]*[A-Z](?:(?P<buch>(?:\s|\b)[XIV]+)?))
""", re.VERBOSE)
Teststring = """Hier zu überprüfenden Text einfügen"""
alle_treffer = p.finditer(Teststring)
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"
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 + ' ')