Узоры в Lua с пространством

Как я мог использовать string.gmatch(text, pattern) сделать это:

text = "Hello.%23 Awesome7^.."
pattern = --what to put here?
for word in string.gmatch(text, pattern) do
  print(word)
end
--Result
>test
Hello.%23
Awesome7^..
>

Я использую "%w+%p", но это приводит к:

>test
Hello.
%
23
Awesome7^
.
.

Что не является желаемым результатом.

Примечание: я не проверял эту точную строку, она может меняться... но все равно не создает желаемого результата

1 ответ

Решение

В вашем примере каждое слово не содержит пробелов и разделено пробелами, поэтому самый простой шаблон "%S+":

text = "Hello.%23 Awesome7^.."
pattern = "%S+"
for word in string.gmatch(text, pattern) do
  print(word)
end

"%s" соответствует пробелу, "%S" соответствует непробельному символу.

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