Identifizierung von Teilzeichenfolgen anhand komplexer Regeln

Angenommen, ich habe Textzeichenfolgen, die ungefähr so aussehen:

A-B-C-I1-I2-D-E-F-I1-I3-D-D-D-D-I1-I1-I2-I1-I1-I3-I3

Hier möchte ich Sequenzen von Markern identifizieren A ist ein Marker,I3 ist ein Marker etc.) dasführt nach obe zu einer Untersequenz bestehend ausnu vonIX Marker (d. h.I1, I2, oderI3) das ein @ enthäI3. Diese Untersequenz kann eine Länge von 1 haben (d. H. Ein einzelnes @ seiI3 marker) oder es kann eine unbegrenzte Länge haben, muss aber immer mindestens 1 @ enthaltI3 marker, und kann nur @ enthaltIX Marker. In der Folge, die zum @ fühIX Untersequenz,I1 undI2 kann einbezogen werden, aber niemalsI3.

In der obigen Zeichenfolge muss ich Folgendes identifizieren:

A-B-C-I1-I2-D-E-F

as führt zumI1-I3 Untersequenz, die @ enthäI3

un

D-D-D-D

as führt zumI1-I1-I2-I1-I1-I3-I3 Untersequenz, die mindestens 1 @ enthäI3.

Hier sind ein paar zusätzliche Beispiele:

A-B-I3-C-I3

von diesem String sollten wir @ identifizierA-B weil es von einer Untersequenz von 1 gefolgt wird, die @ enthäI3, und auchC, weil es von einer Untersequenz von 1 gefolgt wird, die @ enthäI3.

und

I3-A-I3

HierA sollte identifiziert werden, da es von einer Untersequenz von 1 gefolgt wird, die @ enthäI3. Der ErsteI3 selbst wird nicht identifiziert, da wir nur an Untersequenzen interessiert sind, auf die eine Untersequenz von @ folIX Marker, die @ enthaltI3.

Wie kann ich eine generische Funktion / Regex schreiben, die diese Aufgabe erfüllt?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage