Mhm... Ich denke ich bleibe jetzt mal in diesem Thread, da sich das Thema nicht wirklich geändert, sondern nur der Schwierigkeitsgrad erhöht hat.
Im Kontext von Org-Mode gibt es Links mit und ohne Label, die in dieser Form in HTML übersetzt werden.
Code: Alles auswählen
[[https://foo.bar]]
<a href="https://foo.bar">https://foo.bar</a>
[[https://foo.bar][foobar]]
<a href="https://foo.bar">foobar</a>
Ich habe für beide je auch ein RegEx (hier als Python r-String dargestellt)
- r'\[\[(?!id\:)(.+?)\]\[(.+?)\]\]'
- r'\[\[(?!id\:)(.+?)\]\]'
In beiden RegEx wird darauf geachtet, dass "Sonderfall"-Links die mit "[[id:" beginnen, ignoriert werden.
Jetzt der Knüller. Beide Link-Varianten kommen in einem String vor.
Das erste RegEx führt im Ergebnis zu diesen beiden Gruppen
Warum das passiert, kann ich einigermaßen nachvollziehen. Eine Lösung, auch einfach nur konzeptionell unabhängig von RegEx, will mir aber nicht einfallen.
Die Reihenfolge der RegEx-Varianten umzukehren hilft nicht, weil auch die Link-Varianten anders herum auftauchen können.
Also die Frage ist eigentlich, was ich hier überhaut will:
Vermutlich benötige ich zwei RegEx Pattern, eines für jede Link-Variante. Diese Pattern müssen aber die andere Link-Variante ignorieren/übersehen können.
EDIT: Beim ersten RegEx darf in Gruppe 1 kein "]]" vorkommen. Das sind also verbotene Zeichen.