Lua 如何匹配字符串中某个字符之后的内容

我是 Lua 的新手,对于模式匹配并不是很了解。我正在尝试找出如何匹配字符串中冒号后面的所有内容,并将字符串的这部分内容放入一个变量中。我在网上找了很多资料,但似乎并没有找到能解决这个问题的方法。也许是我没有看到,所以我该如何做呢?

举个例子,假设我有一个变量叫作 my_string,它的值为 "hello:hi_there" 或者类似的字符串。我该如何在不改变 my_string 的情况下将 "hi_there" 提取到另一个变量中呢?

似乎我需要使用 string.match(),但是该使用什么模式才能实现我的目标呢?

点赞
用户2674545
用户2674545

你可以通过如下方式实现:

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

圆括号进行模式匹配,点号表示任何字符,星号告诉匹配函数该模式应该重复 0 次或多次。它从:开始匹配,并取出直到字符串末尾的所有内容。

2018-05-17 18:28:48
用户12882771
用户12882771

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

local string = "hello:hi_there"
beg, final = string.find(string, ":") # 返回索引
local new_string = string.sub(string, final + 1) # 获取冒号后的位置

根据文档中的说明,如果您将 sub() 的第三个参数留空,它将默认为 -1,因此它将选取所有剩余的字符串。

2022-01-25 21:44:32