Eine Regex-basierte Lösung ist in Ordnung für Ihr Beispiel, obwohl ich etwas robuster für kompliziertere Eingabe empfehlen würde.
import re
def match_substrings(s):
return re.findall(r"{{([^}]*)}}", s)
Die Regex von innen nach außen:
[^}]
passt alles, was im Inneren Doppel die oben nicht ein ‚}‘ ist
([^}]*)
eine beliebige Anzahl von nicht} Zeichen und gruppiert sie
{{([^}]*)}}
legt Klammern
Ohne die Klammern oben würde re.findall
die gesamte Übereinstimmung zurückgeben (dh ['{{is}}', '{{text}}']
. Wenn die Regex jedoch eine Gruppe enthält, wird findall t verwenden Hut stattdessen.
Möchten Sie nur Teilstrings extrahieren, die in doppelt geschweiften Klammern angezeigt werden? –
@Rafe Ja. Ich brauche nur die Zeichenfolge in diesen geschweiften Klammern. –
Es ist generell keine gute Idee, eine Variable 'string' zu nennen, da es sich um ein häufig verwendetes Python-Modul handelt. –