2010-02-26 18 views

Respuesta

10

Es un positive lookbehind.

(?<=a)b (búsqueda hacia atrás positivo) coincide con el b (y sólo el b) en cab, pero no coincide con bed o debt.

Usted no encontrará en cualquier manual de JavaScript porque es not supported in JavaScript regex:

Por último, sabores como JavaScript, Ruby y Tcl no soportan la búsqueda hacia atrás en absoluto, a pesar de que sí apoyan búsqueda hacia delante.

+0

gracias por la respuesta rápida. – mays

+1

FYI, a partir de la versión 1.9, Ruby admite lookbehind. –

+0

+1 Por mencionar el soporte de JavaScript de esta característica de expresión regular. – Gumbo

2

A partir de la documentación de Python re:

(?<=...)

Partidos si la posición actual en la cadena es precedido por un partido para ... que termina en la posición actual. Esto se llama una afirmación de mirada positiva detrás. (?<=abc)def encontrará una coincidencia en abcdef, ya que lookbehind realizará una copia de respaldo de 3 caracteres y verificará si el patrón contenido coincide. El patrón contenido solo debe coincidir con cadenas de cierta longitud fija, lo que significa que abc o a|b están permitidos, pero a* y a{3,4} no lo son. Tenga en cuenta que los patrones que comienzan con aserciones de observación positiva nunca coincidirán al comienzo de la cadena que se busca; lo más probable es que desee utilizar la búsqueda() función en lugar de la función de concordancia():

>>> import re 
>>> m = re.search('(?<=abc)def', 'abcdef') 
>>> m.group(0) 
'def' 

En este ejemplo se busca una palabra después de un guión:

>>> m = re.search('(?<=-)\w+', 'spam-egg') 
>>> m.group(0) 
'egg' 
1

De regular-expressions.info:

Zero-anchura de búsqueda hacia atrás positiva. Coincide con una posición si el patrón dentro de la búsqueda anticipada puede coincidir terminando en esa posición (es decir, a la izquierda de esa posición). Dependiendo del sabor regex que esté utilizando, es posible que no pueda usar cuantificadores y/o alternancia dentro de lookbehind.

2

Se llama una mirada positiva hacia atrás, está mirando hacia atrás para el carácter x, tenga en cuenta que esto no es compatible con Javascript. Para referencia futura, here's a better manual :)

+0

Gracias nick por el enlace – mays

+0

+1 Por mencionar el soporte de JavaScript de esta característica de expresión regular. – Gumbo