¿Qué es el operador de alternancia en los patrones de Lua?

En expresiones regulares, | se utiliza para la alternancia. ¿Cuál es el carácter correspondiente en los patrones Lua?

preguntado el 03 de mayo de 12 a las 20:05

3 Respuestas

Primero, tenga en cuenta que Lua . no son expresiones regulares; son su propio lenguaje de coincidencia más simple (con diferentes ventajas e inconvenientes).

Según la especificación a la que he vinculado anteriormente, y por esta respuesta, no hay operador de alternancia en un patrón Lua. Para obtener esta funcionalidad, deberá usar una construcción Lua más poderosa (como LPEG o con una Biblioteca Lua Regex).

contestado el 23 de mayo de 17 a las 12:05

Complementaré esta respuesta perfectamente buena diciendo que a veces puede salirse con la suya sin usar LPEG o Lua Regex; un simple 'o' podría ser el truco: if s:match(a) or s:match(b) then ... - kikito

a menudo también puede salirse con la suya con una coincidencia más general y activar el resultado...: local word = s:match("%w+") if word =="foo" or word == "bar" then.... else ....... end - animador

Llegué a esta pregunta desde la perspectiva de Arduino Regexp (que se basa en patrones Lua). Esperaba que esta respuesta incluyera una solución alternativa que pudiera portar. - Michael Molter

Lua no tiene alternancias en patrones que no puedes usar (test1|test2). Solo puedes elegir entre varios personajes como [abcd] coincidirá a, b, c or d.

Respondido 19 Feb 20, 13:02

Otra solución es: En lugar de:

manzana|naranja

Escribir:

[ao][pr][pa][ln][ej.]

Explicación: une letras alternativas de cada palabra. ¡voilá!

Respondido el 08 de junio de 17 a las 02:06

Eso coincidiría arplg también. - yuhao

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.