Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Collapse
Brand Logo

CELua[RU]

  1. Главная
  2. Программирование
  3. Обучающие примеры
  4. Регулярки на Lua. Пронумеровать список строк

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

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

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

    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

Powered by NodeBB | Contributors
СeLua[RU] 2024©
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы