Parece que no puedo encontrar una respuesta a este problema, y me pregunto si existe. Ejemplo simplificado:coincidencias superpuestas en Regex
Considere una cadena "nnnn", donde quiero encontrar todas las coincidencias de "nn", pero también aquellas que se superponen entre sí. Así, el texto proporcionaría los siguientes 3 partidos:
- nn nn
- n nn n
- nn nn
Sé que esto no es exactamente lo expresiones regulares son significado para, pero caminar la cuerda y analizar esto manualmente parece una gran cantidad de código, teniendo en cuenta que en realidad las coincidencias tendrían que hacerse usando un patrón, no una cadena literal. En g.
Además, podría haberlo hecho con una mirada positiva hacia adelante: (? = Nn) n ... que dice "mientras que adelante hay dos N, haga coincidir una N". –
Disculpe, pero todavía no veo las tres capturas superpuestas solicitadas. Capturas dos n, pero no tres grupos. Si hago coincidir (\ d \ d) (? = (\ D \ d)) con foo4237bar, obtengo dos capturas, no tres: 42 y 37 (tanto en Regex Coach como en PCRE Workbench). Probablemente soy grueso, así que necesito más explicaciones. – PhiLho
Lea de nuevo la respuesta: (\ d) (? = (\ D)), no (\ d \ d) (? = (\ D \ d)): tendrá 3 conjuntos de grupos de captura: (4) (2), (2) (3), (3) (7) – VonC