Как найти слова после пробела?

Я хотел бы знать в lua, как мы можем это сделать:

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

Результат = Привет, мир

я пробовал с

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

Но результат = "Мир"

Вы имеете в виду это? extract = string.match(test, " (.+)").

lhf 03.04.2022 01:48

Нет, я хочу получить все после первого пробела.

kulol 03.04.2022 11:30
В чем разница между методом "==" и equals()
В чем разница между методом "==" и equals()
Это один из наиболее часто задаваемых вопросов новичкам на собеседовании. Давайте обсудим его на примере.
Замена символа по определенному индексу в JavaScript
Замена символа по определенному индексу в JavaScript
В JavaScript существует несколько способов заменить символ в строке по определенному индексу.
2
2
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
local test = "Hey Hello World"
local extract = string.match(test, "^.*%s(.*)")
print(extract)

почти правильно, но несколько усложнено. Результат просто "World", потому что он не получит все после первый, а скорее все после пробела прошлой, потому что первый .* жадный - он будет соответствовать столько, сколько может. Ваш шаблон можно было бы исправить, если бы вы просто использовали вместо него .-, который будет соответствовать как можно меньшему количеству символов: "^.-%s(.*)" дает желаемый результат.

Однако ваш шаблон можно значительно упростить, просто опустив начальную привязку шаблона ^, поскольку шаблоны Lua всегда идут слева направо, а (.*) будет жадным совпадением до конца: "%s(.*)" предоставит вам строку после первого символа пробела (может быть пустым). Если вы хотите разрешить двойные пробелы, вы должны использовать квантификатор для первого интервала: "%s+(.*)".

Шаблон lhf " (.+)" также является вариантом, предполагая простое пространство ASCII и предполагая, что вы хотите, чтобы возвращаемое совпадение было непустой строкой или nil.

Другие вопросы по теме