#lua
Вопрос:
Я пытался найти все возможные строки между 2 строками
Это мой вклад: "print/// to be able to put any amount of strings here endprint///"
Цель состоит в том, чтобы напечатать каждую строку между print///
и endprint///
Комментарии:
1. Непонятно, что вы пытаетесь получить, потому что вы неправильно используете слово «строка». «Строка» — это весь текст. «подстрока» — это часть строки. Если вы хотите получить текст между
endprint
— вы хотите получить подстроку. Но если вы хотите, чтобы их было «много», я думаю, вас интересуют слова, разделенные пробелами. Пожалуйста, уточните, что именно вы хотите получить в своем примере.
Ответ №1:
Для этого вы можете использовать шаблоны строк Lua.
local text = "print/// to be able to put any amount of strings here endprint///"
print(text:match("print///(.*)endprint///"))
Шаблон "print///(.*)endprint///"
захватывает любой символ, который находится между "print///"
и "endprint///"
Ответ №2:
В такого рода задачах вы не используете жадные кванторы *
или
вместо этого используете ленивый квантор -
. Это происходит потому *
, что совпадает до последнего появления подобразца после него, в то время -
как совпадает до первого появления подобразца после него. Итак, вам следует использовать этот шаблон:
печать///(.-)конечный отпечаток///
И чтобы соответствовать ему в Lua, вы делаете это:
local text = "print/// to be able to put any amount of strings here endprint///"
local match = text:match("print///(.-)endprint///")
-- `match` should now be the text in-between.
print(match) -- "to be able to put any amount of strings here "