0Pricing
Lua Academy · บทเรียน

ไวยากรณ์รูปแบบ Lua

เรียนรู้กลุ่มอักขระ %d, %a, %s จุดยึด และตัวระบุจำนวนในรูปแบบ Lua

ไวยากรณ์รูปแบบ Lua เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

รูปแบบ Lua เทียบกับนิพจน์ปกติ

Lua ใช้ภาษารูปแบบของตนเอง ไม่ใช่นิพจน์ปกติแบบ POSIX เต็มรูปแบบ ภาษานี้เรียบง่ายและรวดเร็วกว่า แต่ไม่มีการสลับทางเลือก (|) และการมองไปข้างหน้า

คลาสอักขระ

%d ตัวเลข, %a ตัวอักษร, %l ตัวพิมพ์เล็ก, %u ตัวพิมพ์ใหญ่, %s ช่องว่าง, %p เครื่องหมายวรรคตอน, %w ตัวอักษรและตัวเลข อักษรพิมพ์ใหญ่จะเปลี่ยนเป็นความหมายปฏิเสธ: %D = ไม่ใช่ตัวเลข

ตัวระบุจำนวน

* ศูนย์ครั้งขึ้นไป (แบบตะกละ), + หนึ่งครั้งขึ้นไป, ? ศูนย์หรือหนึ่งครั้ง, - ศูนย์ครั้งขึ้นไป (แบบละโมบต่ำสุดหรือจับคู่สั้นที่สุด)

local s = "hello world"
print(s:match("%a+"))   -- hello (first word)
print(s:match(".-o"))   -- hell (lazy stops early)

จุดยึด

^ ยึดกับจุดเริ่มต้นของสตริง ส่วน $ ยึดกับจุดสิ้นสุด

print(("hello"):match("^h"))     -- h
print(("hello"):match("o$"))     -- o
print(("hello"):match("^world")) -- nil

ชุดอักขระด้วย []

คลาสอักขระแบบกำหนดเอง: [aeiou] ตรงกับสระใดก็ได้, [^aeiou] ตรงกับอักขระที่ไม่ใช่สระ, [a-z] ตรงกับตัวอักษรพิมพ์เล็ก

local s = "Hello World 123"
print(s:match("[A-Z]"))     -- H
print(s:match("[0-9]+"))    -- 123

การใช้อักขระหลีกกับอักขระพิเศษ

อักขระพิเศษ ( ) . % + - * ? [ ^ $ ต้องใช้อักขระหลีกด้วย %

local s = "price: 3.14"
print(s:match("%d+%.%d+"))  -- 3.14 (. escaped to match literal dot)

อักขระแทนที่ .

. ตรงกับอักขระเดี่ยวใดก็ได้ ใช้ร่วมกับตัวระบุจำนวนได้: .- คือการจับคู่ทั้งหมดแบบละโมบต่ำสุด

print(("abc123"):match("(.-)%d"))  -- abc (lazy, stops at first digit)

รูปแบบขอบเขต %f

%f[set] ตรงกับตำแหน่งว่างระหว่างอักขระที่ไม่อยู่ใน set กับอักขระที่อยู่ใน set ซึ่งมีประโยชน์สำหรับระบุขอบเขตคำ

local s = "hello world foo"
for w in s:gmatch("%f[%a]%a+") do
  print(w)  -- hello, world, foo
end

string.find เทียบกับ string.match

string.find ส่งคืนดัชนีเริ่มต้นและสิ้นสุด (รวมค่าที่จับได้) ส่วน string.match ส่งคืนข้อความที่ตรงกัน (หรือค่าที่จับได้) โดยตรง

local s = "date: 2025-01-15"
local i, j = s:find("%d%d%d%d%-%d%d%-%d%d")
print(i, j)           -- 7  16
print(s:match("(%d+)-(%d+)-(%d+)"))  -- 2025  01  15

การจับคู่สมดุล %b

%bxy ตรงกับคู่อักขระ x และ y ที่สมดุลกัน ตัวอย่างเช่น %b() ตรงกับวงเล็บที่สมดุลกัน รวมถึงวงเล็บซ้อนกัน

local s = "func(a, (b+c), d)"
print(s:match("%b()"))  -- (a, (b+c), d)

ข้อจำกัดของรูปแบบ

รูปแบบของ Lua ไม่รองรับ: การสลับทางเลือก (a|b), การอ้างอิงย้อนกลับ, การมองไปข้างหน้าหรือข้างหลัง หรือกลุ่มที่มีชื่อ สำหรับกรณีเหล่านี้ ให้ใช้ LPEG หรือไลบรารีนิพจน์ทั่วไปภายนอก

คำถามเกี่ยวกับไวยากรณ์รูปแบบ

รูปแบบใดตรงกับตัวเลขหนึ่งหลักขึ้นไป

สรุป: ไวยากรณ์รูปแบบของ Lua

รูปแบบของ Lua ใช้คลาส %d %a %s, ตัวระบุจำนวน * + ? -, จุดยึด ^ $, ชุดอักขระ [] และ %b สำหรับการจับคู่แบบสมดุล รูปแบบเหล่านี้มีประสิทธิภาพ แต่ไม่มีการสลับทางเลือกแบบนิพจน์ทั่วไป

คำถามที่พบบ่อย

บทเรียน “ไวยากรณ์รูปแบบ Lua” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ไวยากรณ์รูปแบบ Lua” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ไวยากรณ์รูปแบบ Lua”

เรียนรู้กลุ่มอักขระ %d, %a, %s จุดยึด และตัวระบุจำนวนในรูปแบบ Lua คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ไวยากรณ์รูปแบบ Lua” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม

ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ไวยากรณ์รูปแบบ Lua
  2. การจับกลุ่มและ string.match
  3. string.gmatch สำหรับการแยกโทเคน
  4. string.gsub สำหรับการแปลง
← กลับไปที่ Lua Academy