【问题标题】:What is the alternation operator in Lua patterns?Lua 模式中的交替运算符是什么?
【发布时间】:2012-05-13 09:07:14
【问题描述】:

在正则表达式中,| 用于交替。 Lua模式中对应的字符是什么?

【问题讨论】:

标签: lua lua-patterns


【解决方案1】:

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

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

【讨论】:

  • 我将补充这个非常好的答案,说有时你可以不使用 LPEG 或 Lua 正则表达式 - 一个简单的“或”可能会成功:if s:match(a) or s:match(b) then ...
  • 通常你也可以通过更一般的匹配并打开结果......:local word = s:match("%w+") if word =="foo" or word == "bar" then.... else ....... end
  • 我是从 Arduino Regexp(基于 Lua 模式)的角度来回答这个问题的。我希望这个答案将包括我可以移植的解决方法。
【解决方案2】:

Lua 没有您无法使用的模式的交替 (test1|test2)。您只能在多个字符之间进行选择,例如 [abcd] 将匹配 abcd

【讨论】:

    【解决方案3】:

    另一种解决方法是:而不是:

    苹果|橙

    写:

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

    说明:匹配每个单词的替代字母。瞧!

    【讨论】:

    • 这也将匹配arplg
    猜你喜欢
    • 2016-04-15
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2012-04-27
    • 2013-12-04
    相关资源
    最近更新 更多