2011-05-12 16 views
31

Una y otra vez veo que se usan $ 1 y $ 2 en el código. Qué significa eso? ¿Puedes incluir ejemplos?

+1

Esto puede serle útil: [Agrupación y referencias] (http://www.regular-expressions.info/brackets.html) –

Respuesta

30

Cuando crea una expresión regular, tiene la opción de capturar partes de la coincidencia y guardarlas como marcadores de posición. Están numerados comenzando en $1.

Por ejemplo:

/A(\d+)B(\d+)C/ 

Esto captura de A90B3C los valores 90 y 3. Si necesita agrupar elementos pero no desea capturarlos, use la versión (?:...) en lugar de (...).

Los números comienzan de izquierda a derecha en el orden en que están abiertos los corchetes. Eso significa:

/A((\d+)B)(\d+)C/ 

Matching contra la misma cadena capturará 90B, 90 y 3.

+0

Gracias. Aceptaré esta respuesta cuando el tiempo me lo permita. – david

+0

Así debería funcionar: A (\ d +) B ($ 1) C – 0x499602D2

+0

Lo haría en Perl, pero no creo que Ruby admita ese tipo de seguimiento. – tadman

5

Esto es especialmente. útil para Replacement String Syntax (es decir, cadenas de formato) Va bien para casos/pliegues de cajas para Buscar & Reemplaza. Para hacer referencia a una captura, use $ n donde n es el número de registro de captura. Usar $ 0 significa la partida completa. Ejemplo: Find: (<a.*?>)(.*?)(</a>) Replace: $1\u$2\e$3

Cuestiones relacionadas