Lua模式中的替换运算符是什么?

9
在正则表达式中,使用 | 表示替换。在 Lua 模式匹配中对应的字符是什么?

3个回答

18

首先要注意的是Lua的模式(patterns)不是正则表达式,它们是自己简单的匹配语言(具有不同的优缺点)。

根据我上面链接的规范和这个答案,在Lua模式中没有交替运算符。要获得这个功能,您需要使用更强大的Lua构造(例如LPEGLua Regex Library)。


7
我会补充这个非常好的答案,有时候你可以不使用LPEG或Lua正则表达式 - 一个简单的“or”可能就能解决问题:if s:match(a) or s:match(b) then ... - kikito
3
通常情况下,您也可以使用更一般的匹配并切换结果。例如:local word = s:match("%w+") if word =="foo" or word == "bar" then.... else ....... end - daurnimator
我从Arduino Regexp的角度来看待这个问题(它基于Lua模式)。我希望这个答案能包含一个我可以移植的解决方法。 - Michael Molter

2
Lua的模式中没有替代符号,不能使用(test1|test2)。你只能在多个字符之间进行选择,例如[abcd]将匹配abcd

-5
另一个解决方法是:不要写成:

apple|orange

而是写成:

[ao][pr][pa][ln][eg]

解释:匹配每个单词中的交替字母。就这样!


4
这也将匹配 arplg - Yu Hao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接