Identificar subcadenas basadas en reglas complejas
Supongamos que tengo cadenas de texto que se parecen a esto:
A-B-C-I1-I2-D-E-F-I1-I3-D-D-D-D-I1-I1-I2-I1-I1-I3-I3
Aquí quiero identificar secuencias de marcadores (A
es un marcadorI3
es un marcador, etc.) queconduce hasta a una subsecuencia que consistesolamente deIX
marcadores (es decirI1
, I2
oI3
) que contiene unI3
. Esta subsecuencia puede tener una longitud de 1 (es decir, ser una solaI3
marcador) o puede tener una longitud ilimitada, pero siempre debe contener al menos 1I3
marcador, y solo puede contenerIX
marcadores En la subsecuencia que conduce a laIX
subsecuenciaI1
yI2
se puede incluir, pero nuncaI3
.
En la cadena de arriba necesito identificar:
A-B-C-I1-I2-D-E-F
que conduce a laI1-I3
subsecuencia que contieneI3
y
D-D-D-D
que conduce a laI1-I1-I2-I1-I1-I3-I3
subsecuencia que contiene al menos 1I3
.
Aquí hay algunos ejemplos adicionales:
A-B-I3-C-I3
de esta cadena debemos identificarA-B
porque es seguido por una subsecuencia de 1 que contieneI3
, y tambiénC
, porque es seguido por una subsecuencia de 1 que contieneI3
.
y:
I3-A-I3
aquíA
debe identificarse porque es seguido por una subsecuencia de 1 que contieneI3
. El primeroI3
en sí mismo no será identificado, porque solo estamos interesados en subsecuencias que son seguidas por una subsecuencia deIX
marcadores que contienenI3
.
¿Cómo puedo escribir una función genérica / expresión regular que realice esta tarea?