import re
regex = re.compile(r"^(?P<deutsch>(?:(?P<subjekt>(?:in\s)?(?:(?P<sich>sich)|etw\.|jd[mn]\.))\s)*(?P<wort>[\wäÄéöÖüÜß]+)(?:\s(?:(?P<rektion>(?:von|für|an)\s\((?:Dat|Akk)\))|\((?P<extra>[^\)]+)\)))*)\s(?P<definition>(?:[\wáéíóöőúüűÁÉÍÓÖŐÚÜŰ]|[ :,\/\(\);]|\-\n)+)$", flags=re.MULTILINE)
test_str = ("abnehmen (nahm ab, abge-\n"
"nom men) itt: csökken, fogy\n"
"sich abwenden von (Dat)\n"
"elfordul vkitől/vmitől\n"
"sich etw. anhören meghallgat vmit\n"
"anregen (fel)élénkít, felpezs-\n"
"dít, ösztönöz\n"
"jdm. auffallen (fiel auf, ist auf-\n"
"gefallen) feltűnik vkinek vmi\n"
"sich etw. ausleihen (lieh aus,\n"
"ausgeliehen) kikölcsönöz magának vmit\n"
"aussterben (starb aus, ist aus-\n"
"gestorben) kihal\n"
"auszeichnen itt: jellemez vkit/vmit, jellemző vkire/vmire\n"
"behandeln kezel vkit/vmit; tárgyal/kifejt vmit\n"
"benachrichtigen értesít\n"
"jdn. bilden képez, művel vkit\n"
"davonlaufen (lief davon, ist\n"
"davongelaufen) elfut\n"
"jdm. drohen (meg)fenyeget vkit\n"
"durchlesen (las durch, durch-\n"
"gelesen) átolvas\n"
"in etw. eintauchen (tauchte\n"
"ein, ist eingetaucht) bele-\n"
"merül vmibe\n"
"sich entscheiden für (Akk)\n"
"(entschied, entschieden)\n"
"dönt vmi/vki mellett\n"
"jdn. erwischen bei (Dat) vkit\n"
"rajtakap vmin\n"
"fesseln lebilincsel, leköt\n"
"fördern erősít, (elő)segít, támogat\n"
"jdm. gelingen (gelang, ist ge-\n"
"lungen) sikerül vkinek vmi\n"
"jdm. etw. gestehen (gestand,\n"
"gestanden) bevall vkinek vmit\n"
"graben (grub, gegraben) itt: (bele)vés, (bele)metsz\n"
"sich kümmern um (Akk) törő-\n"
"dik vkivel/vmivel\n"
"liegen an (Dat) (lag, gelegen)\n"
"múlik vkin/vmin, függ vkitől/vmitőlloben dicsér\n"
"senken csökkent\n"
"schulen fejleszt, képez\n"
"schwanken (zwischen) inga-\n"
"dozik, nem tud dönteni (dolgok között)\n"
"jdm. etw. stehlen (stahl, ge-\n"
"stoh len) ellop vkitől vmit\n"
"steigern növel, fokoz\n"
"übernehmen (übernahm, über-\n"
"nommen) átvesz, (át)vállal\n"
"überraschen meglep\n"
"überreden zu (Dat) rábeszél vmire\n"
"übersehen (übersah, überse-\n"
"hen) nem vesz észre, elnéz\n"
"etw. übersetzen lefordít\n"
"vergleichen (verglich, vergli-\n"
"chen) összehasonlít\n"
"verlernen elfelejt\n"
"vermitteln közvetít\n"
"vertonen megzenésít\n"
"vervielfältigen sokszorosít\n"
"verwenden használ\n"
"jdm. etw. vorlesen (las vor,\n"
"vor gelesen) felolvas vkinek vmit\n"
"etw. vorstellen bemutat vmit\n"
"zusammenstellen összeállít")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html