From 99a9d12dd7aaac66b4dce51afced072ce3863d76 Mon Sep 17 00:00:00 2001 From: Jesus Ferney Salazar <68440053+MrC0D@users.noreply.github.com> Date: Mon, 21 Sep 2020 17:08:35 -0500 Subject: [PATCH 01/11] Update article.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Traducción casi finalizada, faltan pulir detalles en lo referente al uso de términos y la gramática, estoy atento a consejos. --- .../14-regexp-lookahead-lookbehind/article.md | 140 ++++++++---------- 1 file changed, 61 insertions(+), 79 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index 48c82da14..41aac98c9 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -1,130 +1,112 @@ -# Lookahead and lookbehind +# mirar adelante y mirar atras -Sometimes we need to find only those matches for a pattern that are followed or preceeded by another pattern. +A veces necesitamos buscar solo aquella coincidencia en un patron que es precedida o antecedida por otro patron. -There's a special syntax for that, called "lookahead" and "lookbehind", together referred to as "lookaround". - -For the start, let's find the price from the string like `subject:1 turkey costs 30€`. That is: a number, followed by `subject:€` sign. - -## Lookahead - -The syntax is: `pattern:X(?=Y)`, it means "look for `pattern:X`, but match only if followed by `pattern:Y`". There may be any pattern instead of `pattern:X` and `pattern:Y`. - -For an integer number followed by `subject:€`, the regexp will be `pattern:\d+(?=€)`: +Existe una sintaxis especial para eso, llamada "mirar adelante" y "mirar atras" (del ingles: _"lookahead" and "lookbehind"_ ) ,juntas conocidas como "mirar alrededor" +para empezar, busquemos el precio de la cadena siguente `subject:1 pavo cuesta 30€`. eso es: un numero, seguido de `subject:€` signo +## mirar adelante +La sintaxis es: `pattern:X(?=Y)`. esto significa "mirar por `pattern:X`, pero encontrar una coincidencia solo si es seguido por `pattern:Y`". Deben haber algun patron en lugar de `pattern:X` and `pattern:Y`. +Para un numero entero seguido de `subject:€`, la expresion regular sera `pattern:\d+(?=€)`: ```js run -let str = "1 turkey costs 30€"; +let str = "1 pavo cuesta 30€"; -alert( str.match(/\d+(?=€)/) ); // 30, the number 1 is ignored, as it's not followed by € +alert( str.match(/\d+(?=€)/) ); // 30, el numero 1 es ignorad0, por que no tiene al lado a € ``` -Please note: the lookahead is merely a test, the contents of the parentheses `pattern:(?=...)` is not included in the result `match:30`. - -When we look for `pattern:X(?=Y)`, the regular expression engine finds `pattern:X` and then checks if there's `pattern:Y` immediately after it. If it's not so, then the potential match is skipped, and the search continues. +por favor nota: el mirar adelante es solamente una prueba,lo contenido en los parentesis `pattern:(?=...)` no es incluido en el resultado `match:30`. +Cuando buscamos por `pattern:X(?=Y)`, el buscador de expresion regular encuentra `pattern:X` y luego verifica si existe algun `pattern:Y` inmediatamente despues de el.Si no se cumple, entonces la posible coincidencia es omitida, y la busqueda continua. More complex tests are possible, e.g. `pattern:X(?=Y)(?=Z)` means: - -1. Find `pattern:X`. -2. Check if `pattern:Y` is immediately after `pattern:X` (skip if isn't). -3. Check if `pattern:Z` is also immediately after `pattern:X` (skip if isn't). -4. If both tests passed, then the `pattern:X` is a match, otherwise continue searching. - -In other words, such pattern means that we're looking for `pattern:X` followed by `pattern:Y` and `pattern:Z` at the same time. - -That's only possible if patterns `pattern:Y` and `pattern:Z` aren't mutually exclusive. - -For example, `pattern:\d+(?=\s)(?=.*30)` looks for `pattern:\d+` only if it's followed by a space, and there's `30` somewhere after it: - +Pruebas mas complejas son posibles, ejemplo.`pattern:X(?=Y)(?=Z)` significa: +1. encuentra `pattern:X`. +2. Verifica si `pattern:Y` es inmediatamente despues de `pattern:X` (omitir si no es). +3. Verifica si `pattern:Z` es también inmediatamente después de `pattern:X` (omitir si no es). +4. Si ambos casos se cumplen, entonces el `pattern:X` es una coincidencia, de lo contrario, continúe buscando. + +En otras palabras, dicho patron significa que estamos buscando por `pattern:X` seguido de `pattern:Y` y `pattern:Z` al mismo tiempo. +Eso solo es posible si los patrones `pattern:Y` y `pattern:Z` no son mutuamente exclusivos. +Por ejemplo, `pattern:\d+(?=\s)(?=.*30)` busca por `pattern:\d+` solo si es seguido por un espacio, y si hay `30` en algun lugar despues de eso: ```js run -let str = "1 turkey costs 30€"; +let str = "1 pavo cuesta 30€"; alert( str.match(/\d+(?=\s)(?=.*30)/) ); // 1 ``` -In our string that exactly matches the number `1`. - -## Negative lookahead +En nuestra cadena eso coincide exactamente con el numero `1`. +## Mirada hacia delante negativa -Let's say that we want a quantity instead, not a price from the same string. That's a number `pattern:\d+`, NOT followed by `subject:€`. - -For that, a negative lookahead can be applied. - -The syntax is: `pattern:X(?!Y)`, it means "search `pattern:X`, but only if not followed by `pattern:Y`". +Digamos que queremos una cantidad, no un precio de la misma cadena.Eso es el numero `pattern:\d+`, NO seguido por `subject:€`. +Por eso, una mirada hacia delante negativa puede ser aplicada. +La sintaxis es: `pattern:X(?!Y)`, la cual significa "busca `pattern:X`, pero solo si es seguido por `pattern:Y`". ```js run -let str = "2 turkeys cost 60€"; +let str = "2 pavos cuestan 60€"; -alert( str.match(/\d+(?!€)/) ); // 2 (the price is skipped) +alert( str.match(/\d+(?!€)/) ); // 2 (el precio es omitido) ``` -## Lookbehind - -Lookahead allows to add a condition for "what follows". +## Mirar atras -Lookbehind is similar, but it looks behind. That is, it allows to match a pattern only if there's something before it. - -The syntax is: -- Positive lookbehind: `pattern:(?<=Y)X`, matches `pattern:X`, but only if there's `pattern:Y` before it. -- Negative lookbehind: `pattern:(? Date: Tue, 16 Feb 2021 15:39:18 -0300 Subject: [PATCH 02/11] Update 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md Co-authored-by: Valentiina VP <34555644+vplentinax@users.noreply.github.com> --- 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index 41aac98c9..5be641f98 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -1,6 +1,6 @@ # mirar adelante y mirar atras -A veces necesitamos buscar solo aquella coincidencia en un patron que es precedida o antecedida por otro patron. +A veces necesitamos buscar solo aquella coincidencia en un patrón que es precedida o antecedida por otro patrón. Existe una sintaxis especial para eso, llamada "mirar adelante" y "mirar atras" (del ingles: _"lookahead" and "lookbehind"_ ) ,juntas conocidas como "mirar alrededor" para empezar, busquemos el precio de la cadena siguente `subject:1 pavo cuesta 30€`. eso es: un numero, seguido de `subject:€` signo From 618da2dcc9f4e82d1638380be8d3cee7a4d8549f Mon Sep 17 00:00:00 2001 From: joaquinelio Date: Tue, 16 Feb 2021 15:40:34 -0300 Subject: [PATCH 03/11] Update 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md Co-authored-by: Valentiina VP <34555644+vplentinax@users.noreply.github.com> --- 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index 5be641f98..d5d806f6a 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -3,7 +3,7 @@ A veces necesitamos buscar solo aquella coincidencia en un patrón que es precedida o antecedida por otro patrón. Existe una sintaxis especial para eso, llamada "mirar adelante" y "mirar atras" (del ingles: _"lookahead" and "lookbehind"_ ) ,juntas conocidas como "mirar alrededor" -para empezar, busquemos el precio de la cadena siguente `subject:1 pavo cuesta 30€`. eso es: un numero, seguido de `subject:€` signo +Para empezar, busquemos el precio de la cadena siguiente `subject:1 pavo cuesta 30€`. Eso es: un número, seguido por el signo `subject:€`. ## mirar adelante La sintaxis es: `pattern:X(?=Y)`. esto significa "mirar por `pattern:X`, pero encontrar una coincidencia solo si es seguido por `pattern:Y`". Deben haber algun patron en lugar de `pattern:X` and `pattern:Y`. From 31b6fb8080dccc9ba22dec235fc668799a23cc1d Mon Sep 17 00:00:00 2001 From: joaquinelio Date: Tue, 16 Feb 2021 15:41:16 -0300 Subject: [PATCH 04/11] Update 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md Co-authored-by: Valentiina VP <34555644+vplentinax@users.noreply.github.com> --- 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index d5d806f6a..b2d84ea89 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -104,7 +104,7 @@ Recuerda,`str.match` (sin el indicador `pattern:g`) y `str.matchAll` (siempre) r Pero generalmente mirar alrededor es mas conveniente. tipos de mirar alrededor: -| Patron | tipo | coincidencias | +| Patrón | Tipo | Coincidencias | |--------------------|------------------|---------| | `X(?=Y)` | Mirar adelante positivo | `pattern:X` si es seguido por `pattern:Y` | | `X(?!Y)` | Mirar adelante negativo | `pattern:X` si no es seguido por `pattern:Y` | From 10718dd12ae9079adfe8b68ebbc56955cf5b0d10 Mon Sep 17 00:00:00 2001 From: joaquinelio Date: Tue, 16 Feb 2021 15:41:51 -0300 Subject: [PATCH 05/11] Update 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md Co-authored-by: Valentiina VP <34555644+vplentinax@users.noreply.github.com> --- 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index b2d84ea89..c3ebf9af7 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -108,5 +108,5 @@ tipos de mirar alrededor: |--------------------|------------------|---------| | `X(?=Y)` | Mirar adelante positivo | `pattern:X` si es seguido por `pattern:Y` | | `X(?!Y)` | Mirar adelante negativo | `pattern:X` si no es seguido por `pattern:Y` | -| `(?<=Y)X` | Mirar atras positivo | `pattern:X` si es despues de `pattern:Y` | +| `(?<=Y)X` | Mirar hacia atrás positivo | `pattern:X` si es después de `pattern:Y` | | `(? Date: Tue, 16 Feb 2021 16:18:40 -0300 Subject: [PATCH 06/11] Apply suggestions from code review Co-authored-by: Valentiina VP <34555644+vplentinax@users.noreply.github.com> --- .../14-regexp-lookahead-lookbehind/article.md | 80 +++++++++---------- 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index c3ebf9af7..ec154bf90 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -1,44 +1,43 @@ -# mirar adelante y mirar atras +# Mirar hacia delante (lookahead) y mirar hacia atrás (lookbehind) A veces necesitamos buscar solo aquella coincidencia en un patrón que es precedida o antecedida por otro patrón. -Existe una sintaxis especial para eso, llamada "mirar adelante" y "mirar atras" (del ingles: _"lookahead" and "lookbehind"_ ) ,juntas conocidas como "mirar alrededor" +Existe una sintaxis especial para eso llamada "mirar hacia delante" y "mirar hacia atrás" (del ingles: "lookahead" y "lookbehind" ) , juntas son conocidas como "mirar alrededor" ("lookaround"). Para empezar, busquemos el precio de la cadena siguiente `subject:1 pavo cuesta 30€`. Eso es: un número, seguido por el signo `subject:€`. -## mirar adelante +## Mirar hacia delante -La sintaxis es: `pattern:X(?=Y)`. esto significa "mirar por `pattern:X`, pero encontrar una coincidencia solo si es seguido por `pattern:Y`". Deben haber algun patron en lugar de `pattern:X` and `pattern:Y`. -Para un numero entero seguido de `subject:€`, la expresion regular sera `pattern:\d+(?=€)`: +La sintaxis es: `pattern:X(?=Y)`. Esto significa "buscar `pattern:X`, pero encontrar una coincidencia solo si es seguido por `pattern:Y`". Debe haber algún patrón en lugar de `pattern:X` y `pattern:Y`. +Para un número entero seguido de `subject:€`, la expresión regular será `pattern:\d+(?=€)`: ```js run let str = "1 pavo cuesta 30€"; -alert( str.match(/\d+(?=€)/) ); // 30, el numero 1 es ignorad0, por que no tiene al lado a € +alert( str.match(/\d+(?=€)/) ); // 30, el número 1 es ignorado, porque no está seguido de € ``` -por favor nota: el mirar adelante es solamente una prueba,lo contenido en los parentesis `pattern:(?=...)` no es incluido en el resultado `match:30`. -Cuando buscamos por `pattern:X(?=Y)`, el buscador de expresion regular encuentra `pattern:X` y luego verifica si existe algun `pattern:Y` inmediatamente despues de el.Si no se cumple, entonces la posible coincidencia es omitida, y la busqueda continua. +Por favor tenga en cuenta: "mirar hacia delante" es solamente una prueba, lo contenido en los paréntesis `pattern:(?=...)` no es incluido en el resultado `match:30`. +Cuando buscamos por `pattern:X(?=Y)`, el buscador de expresión regular encuentra `pattern:X` y luego verifica si existe algún `pattern:Y` inmediatamente después de él. Si no se cumple, entonces la posible coincidencia es omitida, y la búsqueda continua. -More complex tests are possible, e.g. `pattern:X(?=Y)(?=Z)` means: -Pruebas mas complejas son posibles, ejemplo.`pattern:X(?=Y)(?=Z)` significa: -1. encuentra `pattern:X`. -2. Verifica si `pattern:Y` es inmediatamente despues de `pattern:X` (omitir si no es). -3. Verifica si `pattern:Z` es también inmediatamente después de `pattern:X` (omitir si no es). +Es posible realizar pruebas más complejas, e.j. `pattern:X(?=Y)(?=Z)` significa: +1. Encuentra `pattern:X`. +2. Verifica si `pattern:Y` está inmediatamente después de `pattern:X` (omitir si no es así). +3. Verifica si `pattern:Z` está también inmediatamente después de `pattern:X` (omitir si no es así). 4. Si ambos casos se cumplen, entonces el `pattern:X` es una coincidencia, de lo contrario, continúe buscando. -En otras palabras, dicho patron significa que estamos buscando por `pattern:X` seguido de `pattern:Y` y `pattern:Z` al mismo tiempo. +En otras palabras, dicho patrón significa que estamos buscando por `pattern:X` seguido de `pattern:Y` y `pattern:Z` al mismo tiempo. Eso solo es posible si los patrones `pattern:Y` y `pattern:Z` no son mutuamente exclusivos. -Por ejemplo, `pattern:\d+(?=\s)(?=.*30)` busca por `pattern:\d+` solo si es seguido por un espacio, y si hay `30` en algun lugar despues de eso: +Por ejemplo, `pattern:\d+(?=\s)(?=.*30)` busca por `pattern:\d+` solo si es seguido por un espacio, y si hay `30` en algún lugar después de eso: ```js run let str = "1 pavo cuesta 30€"; alert( str.match(/\d+(?=\s)(?=.*30)/) ); // 1 ``` -En nuestra cadena eso coincide exactamente con el numero `1`. +En nuestra cadena eso coincide exactamente con el número `1`. ## Mirada hacia delante negativa -Digamos que queremos una cantidad, no un precio de la misma cadena.Eso es el numero `pattern:\d+`, NO seguido por `subject:€`. -Por eso, una mirada hacia delante negativa puede ser aplicada. -La sintaxis es: `pattern:X(?!Y)`, la cual significa "busca `pattern:X`, pero solo si es seguido por `pattern:Y`". +Digamos que queremos una cantidad, no un precio de la misma cadena. Eso es el número `pattern:\d+`, NO seguido por `subject:€`. +Por eso se puede aplicar una "mirada hacia delante negativa" ("negative lookahead"). +La sintaxis es: `pattern:X(?!Y)`, que significa "busca `pattern:X`, pero solo si no es seguido por `pattern:Y`". ```js run let str = "2 pavos cuestan 60€"; @@ -48,22 +47,21 @@ alert( str.match(/\d+(?!€)/) ); // 2 (el precio es omitido) ## Mirar atras -Mirar adelante permite agregar a una condicion para "que sigue". -Mirar atras es similar, pero mira detras. Eso es, permite coincidir un patron solo si hay algo antes de el. +Mirar hacia delante permite agregar a una condicion para "lo que sigue". +Mirar hacia atrás es similar. Es decir, permite coincidir un patrón solo si hay algo antes de el. La sintaxis es: -- Mirar atras positivo: `pattern:(?<=Y)X`, coincide `pattern:X`, pero solo si hay `pattern:Y` antes de el. -- Mirar atras negativo: `pattern:(? Date: Thu, 18 Feb 2021 15:44:59 -0300 Subject: [PATCH 07/11] enajenado --- .../14-regexp-lookahead-lookbehind/article.md | 100 +++++++++++------- 1 file changed, 60 insertions(+), 40 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index 7804f26ea..3bb2140ae 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -1,42 +1,54 @@ -# Mirar hacia delante (lookahead) y mirar hacia atrás (lookbehind) +# Ver delante (lookahead) y ver detrás (lookbehind) -A veces necesitamos buscar solo aquella coincidencia en un patrón que es precedida o antecedida por otro patrón. +A veces necesitamos buscar únicamente aquellas coincidencias donde un patrón sea precedido o seguido por otro patrón. + +Existe una sintaxis especial para eso llamada "ver delante" y "ver detrás" (del ingles: "lookahead" y "lookbehind"), juntas son conocidas como "ver alrededor" ("lookaround"). -Existe una sintaxis especial para eso llamada "mirar hacia delante" y "mirar hacia atrás" (del ingles: "lookahead" y "lookbehind" ) , juntas son conocidas como "mirar alrededor" ("lookaround"). Para empezar, busquemos el precio de la cadena siguiente `subject:1 pavo cuesta 30€`. Eso es: un número, seguido por el signo `subject:€`. -## Mirar hacia delante -La sintaxis es: `pattern:X(?=Y)`. Esto significa "buscar `pattern:X`, pero encontrar una coincidencia solo si es seguido por `pattern:Y`". Debe haber algún patrón en lugar de `pattern:X` y `pattern:Y`. +## Ver delante + +La sintaxis es: `pattern:X(?=Y)`. Esto significa "buscar `pattern:X`, pero encontrar una coincidencia solo si es seguido por `pattern:Y`". Puede haber cualquier patrón en `pattern:X` y `pattern:Y`. + Para un número entero seguido de `subject:€`, la expresión regular será `pattern:\d+(?=€)`: + ```js run let str = "1 pavo cuesta 30€"; -alert( str.match(/\d+(?=€)/) ); // 30, el número 1 es ignorado, porque no está seguido de € +alert( str.match(/\d+(?=€)/) ); // 30, el número 1 es ignorado porque no está seguido de € ``` -Por favor tenga en cuenta: "mirar hacia delante" es solamente una prueba, lo contenido en los paréntesis `pattern:(?=...)` no es incluido en el resultado `match:30`. -Cuando buscamos por `pattern:X(?=Y)`, el buscador de expresión regular encuentra `pattern:X` y luego verifica si existe algún `pattern:Y` inmediatamente después de él. Si no se cumple, entonces la posible coincidencia es omitida, y la búsqueda continua. +Tenga en cuenta: "ver delante" es solamente una prueba, lo contenido en los paréntesis `pattern:(?=...)` no es incluido en el resultado `match:30`. + +Cuando buscamos `pattern:X(?=Y)`, el motor de expresión regular encuentra `pattern:X` y luego verifica si existe `pattern:Y` inmediatamente después de él. Si no existe, entonces la coincidencia potencial es omitida y la búsqueda continúa. + +Es posible realizar pruebas más complejas, por ejemplo `pattern:X(?=Y)(?=Z)` significa: -Es posible realizar pruebas más complejas, e.j. `pattern:X(?=Y)(?=Z)` significa: 1. Encuentra `pattern:X`. -2. Verifica si `pattern:Y` está inmediatamente después de `pattern:X` (omitir si no es así). -3. Verifica si `pattern:Z` está también inmediatamente después de `pattern:X` (omitir si no es así). -4. Si ambos casos se cumplen, entonces el `pattern:X` es una coincidencia, de lo contrario, continúe buscando. +2. Verifica si `pattern:Y` está inmediatamente después de `pattern:X` (omite si no es así). +3. Verifica si `pattern:Z` está también inmediatamente después de `pattern:X` (omite si no es así). +4. Si ambas verificaciones se cumplen, el `pattern:X` es una coincidencia. De lo contrario continúa buscando. En otras palabras, dicho patrón significa que estamos buscando por `pattern:X` seguido de `pattern:Y` y `pattern:Z` al mismo tiempo. -Eso solo es posible si los patrones `pattern:Y` y `pattern:Z` no son mutuamente exclusivos. -Por ejemplo, `pattern:\d+(?=\s)(?=.*30)` busca por `pattern:\d+` solo si es seguido por un espacio, y si hay `30` en algún lugar después de eso: + +Eso es posible solamente si los patrones `pattern:Y` y `pattern:Z` no se excluyen mutuamente. + +Por ejemplo, `pattern:\d+(?=\s)(?=.*30)` busca por `pattern:\d+` y reconoce coincidencia solo si es seguido por un espacio y además hay un `30` en algún lugar después del número encontrado: + ```js run let str = "1 pavo cuesta 30€"; alert( str.match(/\d+(?=\s)(?=.*30)/) ); // 1 ``` -En nuestra cadena eso coincide exactamente con el número `1`. -## Mirada hacia delante negativa +En nuestra cadena eso coincide exactamente con el número `1`. + +## Ver delante negativo + +Digamos que queremos una cantidad, no un precio de la misma cadena. Eso es el número `pattern:\d+` NO seguido por `subject:€`. + +Para eso se puede aplicar un "ver delante negativo" ("negative lookahead"). -Digamos que queremos una cantidad, no un precio de la misma cadena. Eso es el número `pattern:\d+`, NO seguido por `subject:€`. -Por eso se puede aplicar una "mirada hacia delante negativa" ("negative lookahead"). La sintaxis es: `pattern:X(?!Y)`, que significa "busca `pattern:X`, pero solo si no es seguido por `pattern:Y`". ```js run @@ -45,23 +57,27 @@ let str = "2 pavos cuestan 60€"; alert( str.match(/\d+\b(?!€)/g) ); // 2 (el precio es omitido) ``` -## Mirar atras +## Ver detrás + +"Ver delante" permite agregar una condicion para "lo que sigue". + +"Ver detrás" es similar. Permite coincidir un patrón solo si hay algo antes de él. -Mirar hacia delante permite agregar a una condicion para "lo que sigue". -Mirar hacia atrás es similar. Es decir, permite coincidir un patrón solo si hay algo antes de el. La sintaxis es: -- Mirar hacia atrás positivo: `pattern:(?<=Y)X`, coincide `pattern:X`, pero solo si hay `pattern:Y` antes de el. -- Mirar hacia atrás negativo: `pattern:(? Date: Tue, 2 Mar 2021 06:26:01 -0300 Subject: [PATCH 08/11] Update article.md --- .../14-regexp-lookahead-lookbehind/article.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index b8c3020aa..e7f560a06 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -2,13 +2,13 @@ A veces necesitamos buscar únicamente aquellas coincidencias donde un patrón es precedido o seguido por otro patrón. -Existe una sintaxis especial para eso llamada "ver delante" y "ver detrás" (del ingles: "lookahead" y "lookbehind"), juntas son conocidas como "ver alrededor" ("lookaround"). +Existe una sintaxis especial para eso llamada "ver delante" y "ver detrás" (del ingles: "lookahead" y "lookbehind"), juntas son conocidas como "ver alrededor" ("lookaround"). Nota en español: se considera el flujo de lectura, "ahead" o "delante" es lo que tiene a la derecha (lo siguiente por leer), mientras que "behind" o "detrás" es lo que tiene a la izquierda (lo ya leido, no lo que viene "después"). Para empezar, busquemos el precio de la cadena siguiente `subject:1 pavo cuesta 30€`. Eso es: un número, seguido por el signo `subject:€`. ## Ver delante -La sintaxis es: `pattern:X(?=Y)`. Esto significa "buscar `pattern:X`, pero encontrar una coincidencia solo si es seguido por `pattern:Y`". Puede haber cualquier patrón en `pattern:X` y `pattern:Y`. +La sintaxis es: `pattern:X(?=Y)`. Esto significa "buscar `pattern:X`, pero considerarlo una coincidencia solo si es seguido por `pattern:Y`". Puede haber cualquier patrón en `pattern:X` y `pattern:Y`. Para un número entero seguido de `subject:€`, la expresión regular será `pattern:\d+(?=€)`: @@ -33,7 +33,7 @@ En otras palabras, dicho patrón significa que estamos buscando por `pattern:X` Eso es posible solamente si los patrones `pattern:Y` y `pattern:Z` no se excluyen mutuamente. -Por ejemplo, `pattern:\d+(?=\s)(?=.*30)` busca un `pattern:\d+` que sea seguido por un espacio y además haya un `30` en algún lugar después de él `pattern:(?=.*30)`: +Por ejemplo, `pattern:\d+(?=\s)(?=.*30)` busca un `pattern:\d+` que sea seguido por un espacio `pattern:(?=\s)` y que también tenga un `30` en algún lugar después de él `pattern:(?=.*30)`: ```js run let str = "1 pavo cuesta 30€"; @@ -61,13 +61,13 @@ alert( str.match(/\d+\b(?!€)/g) ); // 2 (el precio es omitido) "Ver delante" permite agregar una condicion para "lo que sigue". -"Ver detrás" es similar. Permite coincidir un patrón solo si hay algo antes de él. +"Ver detrás" es similar. Permite coincidir un patrón solo si hay algo anterior a él. La sintaxis es: - Ver detrás positivo: `pattern:(?<=Y)X`, coincide `pattern:X`, pero solo si hay `pattern:Y` antes de él. - Ver detrás negativo: `pattern:(? Date: Tue, 2 Mar 2021 07:32:47 -0300 Subject: [PATCH 09/11] Update article.md --- 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index e7f560a06..a02ba8759 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -2,7 +2,7 @@ A veces necesitamos buscar únicamente aquellas coincidencias donde un patrón es precedido o seguido por otro patrón. -Existe una sintaxis especial para eso llamada "ver delante" y "ver detrás" (del ingles: "lookahead" y "lookbehind"), juntas son conocidas como "ver alrededor" ("lookaround"). Nota en español: se considera el flujo de lectura, "ahead" o "delante" es lo que tiene a la derecha (lo siguiente por leer), mientras que "behind" o "detrás" es lo que tiene a la izquierda (lo ya leido, no lo que viene "después"). +Existe una sintaxis especial para eso llamada "ver delante" y "ver detrás" (del ingles: "lookahead" y "lookbehind"), juntas son conocidas como "ver alrededor" ("lookaround"). Para empezar, busquemos el precio de la cadena siguiente `subject:1 pavo cuesta 30€`. Eso es: un número, seguido por el signo `subject:€`. From cc56b85661c7634d1d3bd08833fffbf94c6c6436 Mon Sep 17 00:00:00 2001 From: joaquinelio Date: Fri, 18 Jun 2021 05:17:15 -0300 Subject: [PATCH 10/11] looks --- .../14-regexp-lookahead-lookbehind/article.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index a02ba8759..1c562e259 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -1,12 +1,12 @@ -# Ver delante (lookahead) y ver detrás (lookbehind) +# Lookahead y lookbehind (revisar delante/detrás) A veces necesitamos buscar únicamente aquellas coincidencias donde un patrón es precedido o seguido por otro patrón. -Existe una sintaxis especial para eso llamada "ver delante" y "ver detrás" (del ingles: "lookahead" y "lookbehind"), juntas son conocidas como "ver alrededor" ("lookaround"). +Existe una sintaxis especial para eso llamadas "lookahead" y "lookbehind" ("ver delante" y "ver detrás"), juntas son conocidas como "lookaround" ("ver alrededor"). Para empezar, busquemos el precio de la cadena siguiente `subject:1 pavo cuesta 30€`. Eso es: un número, seguido por el signo `subject:€`. -## Ver delante +## Lookahead La sintaxis es: `pattern:X(?=Y)`. Esto significa "buscar `pattern:X`, pero considerarlo una coincidencia solo si es seguido por `pattern:Y`". Puede haber cualquier patrón en `pattern:X` y `pattern:Y`. @@ -18,7 +18,7 @@ let str = "1 pavo cuesta 30€"; alert( str.match(/\d+(?=€)/) ); // 30, el número 1 es ignorado porque no está seguido de € ``` -Tenga en cuenta: "ver delante" es solamente una prueba, lo contenido en los paréntesis `pattern:(?=...)` no es incluido en el resultado `match:30`. +Tenga en cuenta: "lookahead" es solamente una prueba, lo contenido en los paréntesis `pattern:(?=...)` no es incluido en el resultado `match:30`. Cuando buscamos `pattern:X(?=Y)`, el motor de expresión regular encuentra `pattern:X` y luego verifica si existe `pattern:Y` inmediatamente después de él. Si no existe, entonces la coincidencia potencial es omitida y la búsqueda continúa. @@ -43,11 +43,11 @@ alert( str.match(/\d+(?=\s)(?=.*30)/) ); // 1 En nuestra cadena eso coincide exactamente con el número `1`. -## Ver delante negativo +## Lookahead negativo Digamos que queremos una cantidad, no un precio de la misma cadena. Eso es el número `pattern:\d+` NO seguido por `subject:€`. -Para eso se puede aplicar un "ver delante negativo" ("negative lookahead"). +Para eso se puede aplicar un "lookahead negativo". La sintaxis es: `pattern:X(?!Y)`, que significa "busca `pattern:X`, pero solo si no es seguido por `pattern:Y`". @@ -57,15 +57,15 @@ let str = "2 pavos cuestan 60€"; alert( str.match(/\d+\b(?!€)/g) ); // 2 (el precio es omitido) ``` -## Ver detrás +## Lookbehind -"Ver delante" permite agregar una condicion para "lo que sigue". +"lookahead" permite agregar una condicion para "lo que sigue". -"Ver detrás" es similar. Permite coincidir un patrón solo si hay algo anterior a él. +"Lookbehind" es similar. Permite coincidir un patrón solo si hay algo anterior a él. La sintaxis es: -- Ver detrás positivo: `pattern:(?<=Y)X`, coincide `pattern:X`, pero solo si hay `pattern:Y` antes de él. -- Ver detrás negativo: `pattern:(? Date: Fri, 18 Jun 2021 05:20:58 -0300 Subject: [PATCH 11/11] Update article.md --- .../14-regexp-lookahead-lookbehind/article.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index 1c562e259..12d5376da 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -18,7 +18,7 @@ let str = "1 pavo cuesta 30€"; alert( str.match(/\d+(?=€)/) ); // 30, el número 1 es ignorado porque no está seguido de € ``` -Tenga en cuenta: "lookahead" es solamente una prueba, lo contenido en los paréntesis `pattern:(?=...)` no es incluido en el resultado `match:30`. +Tenga en cuenta que "lookahead" es solamente una prueba, lo contenido en los paréntesis `pattern:(?=...)` no es incluido en el resultado `match:30`. Cuando buscamos `pattern:X(?=Y)`, el motor de expresión regular encuentra `pattern:X` y luego verifica si existe `pattern:Y` inmediatamente después de él. Si no existe, entonces la coincidencia potencial es omitida y la búsqueda continúa. @@ -59,7 +59,7 @@ alert( str.match(/\d+\b(?!€)/g) ); // 2 (el precio es omitido) ## Lookbehind -"lookahead" permite agregar una condicion para "lo que sigue". +"lookahead" permite agregar una condición para "lo que sigue". "Lookbehind" es similar. Permite coincidir un patrón solo si hay algo anterior a él. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy