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,因此它会占用所有剩余的字符串。
我是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,因此它会占用所有剩余的字符串。