dans regex, | code> est utilisé pour alternance. Quel est le caractère correspondant dans les modèles de Lua? P>
3 Réponses :
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). P>
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 ). P>
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 ... code>
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 code>
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.
Une autre solution de contournement est la suivante: au lieu de: p>
Apple | orange p> blockQuote>
écrire: p>
[AO] [PR] [PA] [ln] [par exemple] p> blockQuote>
Explication: Faites correspondre les lettres alternatives de chaque mot. Voila! p>
Cela correspondrait à arplg code> aussi.
Lua n'a pas d'alternances dans les modèles que vous ne pouvez pas utiliser ( test1 code> |
test2 code>). Vous ne pouvez choisir que plusieurs caractères tels que
[abcd] code> correspondra à
a code>,
b code>,
c code> ou
d code>. p>
Voir aussi Lua String.Match utilise des expressions régulières irrégulières?