【问题标题】:Lua string.match - matching on optional words in a stringLua string.match - 匹配字符串中的可选单词
【发布时间】:2019-01-31 06:02:24
【问题描述】:

当在字符串的开头找到 3 个确切单词中的 1 个时,我需要一个 Lua 模式来匹配,但我只能在网上找到解决方案来展示如何匹配字符类型,即它是以数字开头还是标点符号。

例如,以下字符串应与模式匹配:

  • "player.position"
  • "player.style"
  • "target.width"
  • "enemy.height"

我们可以假设第一个词要么是“玩家”、“目标”或“敌人”,那么我可以创建一个模式,将它们组合在一起并在字符串中只找到其中​​一个时匹配? “。”之后的其余文字。可以是任何东西。

我想出了这个模式,但它有很多问题:

local pattern = "[player target enemy]*%..+";

第一部分可以匹配方括号之间包含的任何字符序列,例如,与此模式一起使用的"bannana_target_apple.position" 将返回"apple.position",因为"a""p""l""e"在模式中的方括号之间找到。

感谢您提供的任何帮助。

【问题讨论】:

    标签: regex string lua match


    【解决方案1】:

    当在字符串开头找到 3 个精确单词中的 1 个时匹配的 Lua 模式:

    if ({player=0, target=0, enemy=0})[your_string:match"^(%w+)%."] then 
       ... 
    end
    

    【讨论】:

    • 遗憾的是没有用于指定有序字符序列的内置正则表达式,但我真的很喜欢你的解决方案,非常聪明。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多