# Trabajar con expresiones

{% hint style="danger" %}
Tenga en cuenta que el tiempo de ejecución de una expresión regular es de 5 segundos.
{% endhint %}

findall() | similar()

<mark style="color:rojo;">**LEYENDA:**</mark>

<mark style="color:rojo;">**!**</mark> - Parámetros obligatorios

#### <mark style="color:predeterminado;background-color:blue;">Buscar en una cadena usando una expresión regular</mark>

**findall(reg, str, index) -** para encontrar todas las coincidencias de grupos en una cadena

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;reg** - expresión regular

<mark style="color:rojo;">**!**</mark>**&#x20;str** - cadena en la que se realiza la búsqueda

&#x20;**index** - índice del resultado encontrado. Comienza en cero. Eso significa que el primer resultado encontrado tiene el índice 0.

<mark style="color:predeterminado;background-color:blue;">**Comparación de cadenas con tolerancia a errores tipográficos**</mark>

**similar(str1, str2)** - compara dos cadenas permitiendo errores tipográficos. Devuelve True si las cadenas difieren en menos del 30%.

<details>

<summary>Ejemplo</summary>

Veamos un ejemplo de búsqueda de una cadena usando una expresión regular especificada:

<div data-with-frame="true"><figure><img src="/files/dc2526bb9479ba6419aa86ea42c8b3344ac73e91" alt="" width="375"><figcaption></figcaption></figure></div>

El resultado es el siguiente:

<div data-with-frame="true"><figure><img src="/files/a111711b87a6985a1f413b07f9a4d98477551727" alt="" width="375"><figcaption></figcaption></figure></div>

Ejemplo de uso de la función de comparación de cadenas tolerante a errores tipográficos:&#x20;

En el bloque inicial, añadimos nuestro acertijo en la sección del mensaje. Luego, también añadimos la respuesta a nuestro acertijo en la calculadora usando la variable:

**riddle = 'cold'.**

En el segundo bloque, introducimos la siguiente expresión en la calculadora:

**response = if(similar(riddle, question) == True, "¡genial!", "¡Nooo! es un #{riddle}").**

No olvides añadir **#{response}** a la sección del mensaje.

<div data-with-frame="true"><figure><img src="/files/1aac8d107de7d3e4caee234ae704960d46fb9cbc" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/e0223b5e91b588efb73f113a0cefb008101820d2" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/22ea53ef99803e3b5c1b8c06ca6d0e91224a194c" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Código</summary>

<pre><code><strong>a = findall('.ai\/(.+)\/', 'https://payform.com/ab252acn/', 0)
</strong>
response = if(similar(riddle, question) == True , "¡genial!", "¡Nooo! es un #{riddle}")
</code></pre>

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/es/chatbot/functions/calculadora/expressions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
