So erhalten Sie alle möglichen überlappenden Übereinstimmungen für eine Zeichenfolge
Ich arbeite an dem MIU-Systemproblem aus "Gödel, Escher, Bach", Kapitel 2.
Eine der Regeln besagt
Rule III: If III occurs in one of the strings in your collection, you may make a new string with U in place of III.
Was bedeutet, dass die ZeichenfolgeMIII
kann werdenMU
Für andere längere Zeichenfolgen gibt es möglicherweise mehrere Möglichkeiten [Übereinstimmungen in Klammern]:
MIIII
nachgeben könnteM[III]I
>>MUI
MI[III]
>>MIU
MUIIIUIIIU
nachgeben könnteMU[III]UIIIU
>>MUUUIIIU
MUIIIU[III]U
>>MUIIIUUU
MUIIIIU
nachgeben könnteMU[III]IU
>>MUUIU
MUI[III]U
>>MUIUU
Klar reguläre Ausdrücke wie/(.*)III(.*)/
sind hilfreich, aber ich kann sie scheinbar nicht dazu bringen, jedes mögliche Match zu generieren, nur das erste, das es zufällig findet.
Gibt es eine Möglichkeit, jedes mögliche Match zu generieren?
(Beachten Sie, dass ich mir Möglichkeiten ausdenken kann, dies vollständig manuell zu tun, aber ich hoffe, dass es eine bessere Möglichkeit gibt, die eingebauten Tools, Regex oder andere zu verwenden.)
(Bearbeitet, um überlappende Anforderungen zu klären.)