9
votes

Quel est l'opérateur d'alternance dans les modèles de Lua?

dans regex, | est utilisé pour alternance. Quel est le caractère correspondant dans les modèles de Lua?


3 Réponses :


16
votes

Premièrement, notez que Lua modèles ne sont pas réguliers expressions; Ils sont leur propre langue correspondante plus simple (avec des avantages et des inconvénients différents).

par la spécification que j'ai liée au-dessus et par Cette réponse , il n'y a pas d'opérateur d'alternance dans une Lua modèle. Pour obtenir cette fonctionnalité, vous devez utiliser une construction Lua plus puissante (comme LPEG ou un Lua Regex Bibliothèque ).


3 commentaires

Je compléterai cette réponse parfaitement bonne en disant que parfois vous pouvez vous échapper sans utiliser LPEG ou Lua Regex - une plaine'or'or'a pourrait faire l'affaire: Si S: Match (A) ou S: Match (B) Alors ...


Souvent, vous pouvez également vous éloigner avec une correspondance plus générale et basculer sur le résultat ...: Word local = S: Match ("% w +") Si Word == "FOO" ou Word == "bar" puis .... sinon ... find


Je suis venu à cette question de la perspective d'Arduino Regexp (qui est basée sur les modèles de Lua). J'espérais que cette réponse inclurait un travail autour que je pourrais porter.



-5
votes

Une autre solution de contournement est la suivante: au lieu de:

Apple | orange

écrire:

[AO] [PR] [PA] [ln] [par exemple]

Explication: Faites correspondre les lettres alternatives de chaque mot. Voila!


1 commentaires

Cela correspondrait à arplg aussi.



1
votes

Lua n'a pas d'alternances dans les modèles que vous ne pouvez pas utiliser ( test1 | test2 ). Vous ne pouvez choisir que plusieurs caractères tels que [abcd] correspondra à a , b , c ou d .


0 commentaires