【问题标题】:Lua Match Everything After Character in StringLua 匹配字符串中字符后的所有内容
【发布时间】:2018-10-28 00:44:26
【问题描述】:

我是 Lua 新手,几乎不了解模式匹配。我试图弄清楚如何在冒号后匹配字符串中的所有内容,并将字符串的那部分放入变量中。我在网上四处逛逛时运气不佳,或者我只是没有看到它。那我该怎么做呢?

例如,假设我有一个名为my_string 的变量等于"hello:hi_there" 或类似的东西。如何在不更改 my_string 的情况下将 "hi_there" 提取到另一个变量?

看起来我需要使用string.match(),但是要使用什么模式来实现我的目标?

【问题讨论】:

    标签: lua lua-patterns


    【解决方案1】:

    您可以通过执行以下操作来实现:

    local my_string = "hello:hi_there"
    local extracted = string.match(my_string, ":(.*)")
    print(extracted)
    

    括号进行模式捕获,点表示任何字符,星号告诉匹配函数该模式应该重复 0 次或更多次。它从: 开始匹配,直到字符串结尾为止。

    【讨论】:

    • 我做 print(string.match("hello:hi_there:erhuheriu:gg", ":(.*)")) 并且只需要最后一个子字符串,即 : 之后的 gg ,有什么提示吗?跨度>
    • @Altanai 你可以做类似print(string.match("first:second:third",":([^:]+)$")) 的事情。 [^:] 匹配任何不是: 的内容,$ 匹配字符串的结尾。
    【解决方案2】:

    因为您不希望 : 出现在选择中,所以我将在以下实现中组合 string.find()string.sub()

    local string = "hello:hi_there"
    beg, final = string.find(string, ":") # Returns the index
    local new_string = string.sub(string, final + 1) # Takes the position after the colon 
    

    根据documentation,如果你将sub()的第三个参数留空,它默认为-1,所以它会接受所有剩余的字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 2011-03-12
      • 2021-10-03
      • 1970-01-01
      相关资源
      最近更新 更多