Використання регулярних виразів

Lua:
Використання регулярних виразів

Як це зробити:

Lua стандартно не підтримує регулярні вирази в той самий спосіб, як мови типу Perl або Python. Замість цього, вона пропонує можливості пошуку за шаблонами, які покривають багато поширених випадків використання регулярних виразів. Однак, для повноцінної підтримки регулярних виразів, можна використовувати сторонню бібліотеку, наприклад, lrexlib.

Базовий пошук за шаблоном у Lua:

Lua надає потужну систему пошуку за шаблоном, яку ви можете використовувати для простих замін та пошуків:

-- Простий пошук
local str = "Привіт, Світ!"
if string.find(str, "Світ") then
  print("Збіг знайдено!")
end
-- Вивід: Збіг знайдено!

-- Проста заміна
local s = string.gsub("Lua чудова!", "чудова", "вражаюча")
print(s)
-- Вивід: Lua вражаюча!

Захоплення підрядків:

Ви можете захоплювати частини рядка, які відповідають шаблонам:

local date = "Сьогодні 17/05/2023."
local d, m, y = string.match(date, "(%d+)/(%d+)/(%d+)")
print("День:", d, "Місяць:", m, "Рік:", y)
-- Вивід: День: 17 Місяць: 05 Рік: 2023

Використання lrexlib для регулярних виразів:

Щоб використовувати справжні регулярні вирази, ви можете встановити та використовувати lrexlib. Припускаючи, що ви його встановили (luarocks install lrexlib-pcre), ви можете виконувати більш складний пошук за шаблоном:

local rex = require 'rex_pcre'

local text = "Дощ у Іспанії залишається головним чином на рівнині."
local regex = "\\\\w+"
local count, err = rex.gsub(text, regex, function(w)
  return w:upper()
end)
if err then
  print("Помилка:", err)
else
  print("Змінений текст:", text)
  print("Зроблено замін:", count)
end
-- Приклад виводу: Змінений текст: Дощ у ІСПАНІЇ залишається головним чином на рівнині.
-- Зроблено замін: 3

Наведені вище приклади ілюструють базове використання системи пошуку за шаблоном самої Lua та як використовувати потужність регулярних виразів через lrexlib. Чи вам потрібно виконувати прості маніпуляції з рядками, чи вимагаєте повної універсальності регулярних виразів, Lua разом із потужними бібліотеками може задовольнити ваші потреби.