Lua 匹配字符串中字符后的所有内容

Lua Match Everything After Character in String

我是Lua的新手,对模式匹配几乎一窍不通。我想弄清楚如何匹配冒号后字符串中的所有内容,并将字符串的那部分放入变量中。我在网上四处寻找并没有太多运气,或者也许我只是没有看到它。那我该怎么做呢?

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

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

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

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

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

因为您不希望 : 出现在选择中,所以我会在以下实现中组合 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,因此它会占用所有剩余的字符串。