Excepto por la aserción de longitud cero, el carácter en la entrada siempre se consumirá en la coincidencia. Si alguna vez está en el caso en que desea capturar cierto carácter en la cadena de entrada más una vez, necesitará una aserción de longitud cero en la expresión regular.
Hay varias afirmación de longitud cero (por ejemplo ^
(inicio de la entrada/línea), $
(final de la entrada/línea), \b
(límite de palabra)), pero mira-around ((?<=)
positivo mirada-atrás y (?=)
look-ahead positivo) son la única forma en que puede capturar texto superpuesto de la entrada. Las visualizaciones negativas ((?<!)
look-behind negativo, (?!)
look-ahead negativo) no son muy útiles aquí: si son ciertas, la captura en el interior falló; si afirman que es falso, entonces la coincidencia falla. Estas aserciones son de longitud cero (como se mencionó anteriormente), lo que significa que afirmarán sin consumir los caracteres en la cadena de entrada. En realidad, coincidirán con la cadena vacía si la afirmación pasa.
La aplicación de los conocimientos anteriores, una expresión regular que funcione para su caso sería:
(?=(\w\w))
[Lookahead] (http://stackoverflow.com/questions/320448/overlapping-matches-in-regex) –