CELua[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    Регулярки на Lua. Пронумеровать список строк

    Запланировано Прикреплена Закрыта Перенесена Обучающие примеры
    ce luaобучалкаregular
    1 Сообщения 1 Posters 33 Просмотры 1 Watching
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • MasterGHM Не в сети
      MasterGH Администраторы
      отредактировано

      Пример задачи. Пронумеровать список

      string
      string.byte
      string.char
      string.dump
      string.find
      string.format
      string.gmatch
      string.gsub
      string.len
      string.lower
      string.match
      string.pack
      string.packsize
      string.rep
      string.reverse
      string.sub
      string.unpack
      string.upper
      
      local text = [[
      string
      string.byte
      string.char
      string.dump
      string.find
      string.format
      string.gmatch
      string.gsub
      string.len
      string.lower
      string.match
      string.pack
      string.packsize
      string.rep
      string.reverse
      string.sub
      string.unpack
      string.upper
      ]]
      
      function EnumerateText(text)
        local count = 0
        local rez = text:gsub('%C+', function (s)
         count = count + 1
         return string.format('%s. %s', count, s)
        end)
      
        showMessage(rez)
        writeToClipboard(rez)
      end
      
      EnumerateText(text)
      

      И получил ответ. В следующий раз только вызывать "EnumerateText([[ текст со строками]])"

      1. string
      2. string.byte
      3. string.char
      4. string.dump
      5. string.find
      6. string.format
      7. string.gmatch
      8. string.gsub
      9. string.len
      10. string.lower
      11. string.match
      12. string.pack
      13. string.packsize
      14. string.rep
      15. string.reverse
      16. string.sub
      17. string.unpack
      18. string.upper
      

      Тут в буфер текст улетит и выведет в мессагу. После закрытия мессаги через CTRL+V вставит текст, куда хотим

      Пронумерованные функции — функции работы со строками последней версии Lua 5.3.x из документации

      На что стоит обратить внимание при регулярках:

      1. Работа с пробелами и не пробелами: "%s" и "%S"
      2. Работа с символами разделяющие строки и не разделяющими строки: "%с" и "%С"
      3. Захват строк "(.+)", "(.-)", "(.)", а также без захвата, т.е. пропуск других символов ".+",".-","."
      4. Узнать как и какая функция из выше перечисленных работает, какая используется с регуляторами.

      Хотим к примеру вывести слово, которое закончится на пробеле (пишу просто "на пробеле" без учета других символов). Это уже "(%w+)", а если хотим второе слово, то это "%W+%w+" (не выводить первое и вывести второе слово) или "%s(%w+)" (после пробела, но чтобы было без пробела, то захватить в круглые скобки), или "^.+%s(%w+)"(начинать с первого символа до пробела и захват до конца слова).

      Если писать на CE Lua, то регулярки знать не обязательно. Но, их желательно знать, чтобы читать чужой код и писать свой. Да и вообще это интересно. Очень короткие выражения позволяют решить некоторую задачу за быстрое время. Основные задачи: поиск текста и замена текста.

      1 ответ Последний ответ Ответить Цитировать 0

      • 1 / 1
      • Первое сообщение
        Последнее сообщение
      Powered by NodeBB | Contributors
      СeLua[RU] 2025©