Saltar al contenido

Precedencia de operadores en expresiones regulares

Ten en cuenta que en las ciencias informáticas un problema casi siempere suele tener varias resoluciones, así que nosotros te mostramos lo más óptimo y mejor.

Solución:

Dado el documento de Oracle:

La Tabla 4-2 enumera la lista de metacaracteres admitidos para su uso en expresiones regulares pasadas a funciones y condiciones de expresiones regulares de SQL. Estos metacaracteres se ajustan al estándar POSIX; cualquier diferencia en el comportamiento del estándar se indica en la columna “Descripción”.

Y echando un vistazo a la | valor en esa tabla:

La expresión a|b coincide con el carácter a o el carácter b.

Además de echar un vistazo al documento POSIX:

Precedencia de operadores El orden de precedencia de los operadores es el siguiente:

  1. Símbolos de paréntesis relacionados con la intercalación [==] [::] [..]

  2. Personajes escapados

  3. Juego de caracteres (expresión entre paréntesis) []

  4. Agrupación ()

  5. Duplicación ERE de un solo carácter * + ? Minnesota

  6. Concatenación

  7. Anclaje ^$

  8. Alternancia |

yo diría que H|ha+ sería lo mismo que (?:H|ha+).

Usando grupos de captura para demostrar el orden de evaluación, la expresión regular H|ha+ es equivalente a lo siguiente:

(H|(h(a+)))

Esto se debe a que las reglas de precedencia (como se ve a continuación) se aplican en orden desde la precedencia más alta (el número más bajo) hasta la precedencia más baja (el número más alto):

  • Regla 5 → (a+) El + se agrupa con el a porque este operador funciona en el carácter único anterior, referencia inversa, grupo (una “subexpresión marcada” en el lenguaje de Oracle) o expresión de corchete (clase de carácter).

  • Regla 6 → (h(a+)) El h luego se concatena con el grupo en el paso anterior.

  • Regla 8 → (H|(h(a+))) El H luego se alterna con el grupo del paso anterior.


Tabla de precedencia de la sección 9.4.8 de los documentos POSIX para expresiones regulares (no parece haber una tabla oficial de Oracle):

+---+----------------------------------------------------------+
|   |             ERE Precedence (from high to low)            |
+---+----------------------------------------------------------+
| 1 | Collation-related bracket symbols | [==] [::] [..]       |
| 2 | Escaped characters                |  |
| 3 | Bracket expression                | []                   |
| 4 | Grouping                          | ()                   |
| 5 | Single-character-ERE duplication  | * + ? m,n          |
| 6 | Concatenation                     |                      |
| 7 | Anchoring                         | ^ $                  |
| 8 | Alternation                       | |                    |
+---+-----------------------------------+----------------------+

La tabla anterior es para expresiones regulares extendidas. Para Expresiones Regulares Básicas ver 9.3.7.

Agradecemos que desees añadir valor a nuestro contenido informacional aportando tu experiencia en los comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *