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 werdenMUFür andere längere Zeichenfolgen gibt es möglicherweise mehrere Möglichkeiten [Übereinstimmungen in Klammern]:

MIIII nachgeben könnteM[III]I >>MUIMI[III] >>MIUMUIIIUIIIU nachgeben könnteMU[III]UIIIU >>MUUUIIIUMUIIIU[III]U >>MUIIIUUUMUIIIIU nachgeben könnteMU[III]IU >>MUUIUMUI[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.)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage