שימוש בביטויים רגולריים

Lua:
שימוש בביטויים רגולריים

איך ל:

לואה אינה תומכת בביטויים רגולריים באופן טבעי בדרך כמו שפות כמו Perl או Python. במקום זאת, היא מציעה יכולות התאמת דפוסים שכוללות מקרי שימוש רבים נפוצים של ביטויים רגולריים. עם זאת, לתמיכה מלאה בביטויים רגולריים, אפשר להשתמש בספריית צד שלישי כמו lrexlib.

התאמת דפוסים בסיסית בלואה:

לואה מספקת מערכת התאמת דפוסים חזקה שאת/ה יכול/ה להשתמש בה לחיפושים והחלפות פשוטות:

-- חיפוש פשוט
local str = "שלום, עולם!"
if string.find(str, "עולם") then
  print("נמצאה התאמה!")
end
-- פלט: נמצאה התאמה!

-- החלפה פשוטה
local s = string.gsub("לואה מעולה!", "מעולה", "מדהים")
print(s)
-- פלט: לואה מדהים!

לכידת תתי-מחרוזות:

את/ה יכול/ה ללכוד חלקים מהמחרוזת שתואמים לדפוסים:

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 = "\\bS\\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

הדוגמאות לעיל ממחישות שימוש בסיסי במערכת התאמת הדפוסים של לואה ואיך להשתמש בכוח של ביטויים רגולריים באמצעות lrexlib. בין אם את/ה מבצע/ת שינויים פשוטים במחרוזות או דורש/ת את כל הגמישות המוצעת על ידי ביטויים רגולריים, לואה, בשילוב עם ספריות חזקות, יכולה לענות על צרכיך.