

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Función REGEXP\$1INSTR
<a name="REGEXP_INSTR"></a>

Busca una cadena para un patrón de expresión regular y devuelve un valor entero que indica la posición de inicio o de finalización de la subcadena coincidente. Si no se encuentra coincidencia, la función devuelve `0`. REGEXP\$1INSTR es similar a la función [POSITION](r_POSITION.md), pero le permite buscar un patrón de expresión regular en una cadena. Para obtener más información sobre las expresiones regulares, consulte [Operadores POSIX](pattern-matching-conditions-posix.md) y [Expresión regular](https://en.wikipedia.org/wiki/Regular_expression) en la Wikipedia.

## Sintaxis
<a name="REGEXP_INSTR-synopsis"></a>

```
REGEXP_INSTR( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )
```

## Argumentos
<a name="REGEXP_INSTR-arguments"></a>

 *source\$1string*   
Una expresión de cadena, como un nombre de columna, que se buscará. 

 *Patrón*   
Un literal de cadena UTF-8 que representa un patrón de expresión regular. Para obtener más información, consulte [Operadores POSIX](pattern-matching-conditions-posix.md).

 *position*   
(Opcional) Un número `INTEGER` que indica la posición dentro de *source\$1string* para comenzar la búsqueda. La posición se basa en la cantidad de caracteres, no bytes, por lo que los caracteres multibyte se cuentan como caracteres simples. El valor predeterminado es `1`. Si el valor de *posición* es menor que `1`, la búsqueda comienza en el primer carácter de *source\$1string*. Si el valor de *posición* es mayor que el número de caracteres de *source\$1string*, el resultado es `0`.

 *occurrence*   
(Opcional) Un número `INTEGER` positivo que indica qué coincidencia del patrón se va a utilizar. REGEXP\$1INSTR omite las primeras coincidencias `occurrence-1`. El valor predeterminado es `1`. Si *occurrence* es menor que `1` o mayor que el número de caracteres de *source\$1string*, la búsqueda se omite y el resultado es `0`.

 *Opción*   
(Opcional )Valor que indica si se va a devolver la posición del primer carácter de la coincidencia (`0`) o la posición del primer carácter situado a continuación del final de la coincidencia (`1`). Un valor distinto de cero es lo mismo que `1`. El valor predeterminado es `0`. 

 *Parámetros*   
(Opcional) Uno o varios literales de cadena que indican el grado de coincidencia de la función con el patrón. Los valores posibles son los siguientes:  
+ c: aplica la coincidencia que distingue entre mayúsculas y minúsculas. El comportamiento predeterminado es utilizar la coincidencia que distingue entre mayúsculas y minúsculas. 
+ i: aplica la coincidencia que no distingue entre mayúsculas y minúsculas. 
+ e: extrae una subcadena mediante una subexpresión. 

  Si *pattern* incluye una subexpresión, REGEXP\$1INSTR realiza la comparación con una subcadena utilizando la primera subexpresión de *pattern*. REGEXP\$1INSTR solo tiene en cuenta la primera subexpresión; las subexpresiones adicionales se omiten. Si el patrón no incluye una subexpresión, REGEXP\$1INSTR omite el parámetro 'e'. 
+ p: interpreta el patrón con el dialecto de expresión regular compatible con Perl (PCRE). Para obtener más información sobre PCRE, consulte [Perl Compatible Regular Expressions](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) en la Wikipedia.

## Tipo de retorno
<a name="REGEXP_INSTR-return-type"></a>

Entero

## Ejemplos
<a name="REGEXP_INSTR-examples"></a>

En los siguientes ejemplos se utilizan datos de la tabla USERS en la base de datos de ejemplo TICKIT. Para obtener más información, consulte [Base de datos de muestra](c_sampledb.md). 

Para buscar el carácter `@` que comienza un nombre de dominio y devolver la posición inicial de la primera coincidencia, use el siguiente ejemplo.

```
SELECT email, REGEXP_INSTR(email, '@[^.]*')
FROM users
ORDER BY userid LIMIT 4;

+-----------------------------------------------+--------------+
|                     email                     | regexp_instr |
+-----------------------------------------------+--------------+
| Etiam.laoreet.libero@sodalesMaurisblandit.edu |           21 |
| Suspendisse.tristique@nonnisiAenean.edu       |           22 |
| amet.faucibus.ut@condimentumegetvolutpat.ca   |           17 |
| sed@lacusUtnec.ca                             |            4 |
+-----------------------------------------------+--------------+
```

Para buscar variantes de la palabra `Center` y devolver la posición inicial de la primera coincidencia, use el siguiente ejemplo..

```
SELECT venuename, REGEXP_INSTR(venuename,'[cC]ent(er|re)$')
FROM venue
WHERE REGEXP_INSTR(venuename,'[cC]ent(er|re)$') > 0
ORDER BY venueid LIMIT 4;

+-----------------------+--------------+
|       venuename       | regexp_instr |
+-----------------------+--------------+
| The Home Depot Center |           16 |
| Izod Center           |            6 |
| Wachovia Center       |           10 |
| Air Canada Centre     |           12 |
+-----------------------+--------------+
```

Para encontrar la posición inicial de la primera vez que aparece la cadena `FOX`, con una lógica que no distingue entre mayúsculas y minúsculas, use el siguiente ejemplo. 

```
SELECT REGEXP_INSTR('the fox', 'FOX', 1, 1, 0, 'i');

+--------------+
| regexp_instr |
+--------------+
|            5 |
+--------------+
```

Para usar un patrón escrito en el dialecto de PCRE para localizar palabras que contengan al menos un número y una letra en minúsculas, use el siguiente ejemplo. Se utiliza el operador `?=`, que tiene una connotación específica de anticipación en PCRE. En este ejemplo, se encuentra la posición inicial de la segunda palabra que reúne esas características.

```
SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'p');

+--------------+
| regexp_instr |
+--------------+
|           21 |
+--------------+
```

Para usar un patrón escrito en el dialecto de PCRE para localizar palabras que contengan al menos un número y una letra en minúsculas, use el siguiente ejemplo. Se utiliza el operador `?=`, que tiene una connotación específica de anticipación en PCRE. En este ejemplo, se encuentra la posición inicial de la segunda palabra que reúne esas características, pero difiere del ejemplo anterior, ya que se utiliza una coincidencia sin distinción entre mayúsculas y minúsculas.

```
SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'ip');

+--------------+
| regexp_instr |
+--------------+
|           15 |
+--------------+
```