如何找到space后面的单词?

How to find the words after a space?

我想知道 lua,我们该怎么做:

local test = "Hey Hello World"
local extract = string.match(test, "I don't know what to put here")
print(extract)

结果 = Hello World

我试过

local test = "Hey Hello World"
local extract = string.match(test, "^.*%s(.*)")
print(extract)

但结果 =“世界”

local test = "Hey Hello World"
local extract = string.match(test, "^.*%s(.*)")
print(extract)

几乎是正确的,但有点过于复杂。结果只是 "World" 因为它不会得到 first 之后的所有内容,而是 last [=34= 之后的所有内容] 因为第一个 .* 是贪心的——它会尽可能匹配。如果您只是使用 .- 代替,您的模式可能会得到修复,这将匹配尽可能少的字符:"^.-%s(.*)" 产生所需的结果。

然而,您的模式可以通过省略 ^ 开始模式锚点来显着简化,因为 Lua 模式总是从 left-to-right 出发,而 (.*) 将是一个贪婪的匹配最后:"%s(.*)" 将为您提供第一个 space 字符(可以为空)之后的字符串。如果你想允许双 spaces,你必须对第一个间距使用量词:"%s+(.*)".

lhf 的模式 " (.+)" 也是一个选项,假设一个简单的 ASCII space 并假设您希望返回的匹配是一个非空字符串或 nil .