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

string.gmatch สำหรับการแยกโทเคน

วนดูส่วนที่ตรงกันทั้งหมดในข้อความด้วย string.gmatch

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

string.gmatch คืออะไร

string.gmatch(s, pattern) ส่งคืนตัววนซ้ำที่ทยอยส่งคืนผลการจับคู่ทั้งหมดของ pattern ในสตริง s

การวนซ้ำผ่านคำ

แบ่งสตริงเป็นคำโดยจับลำดับของอักขระที่ไม่ใช่ช่องว่าง

local s = "the quick brown fox"
for word in s:gmatch("%S+") do
  print(word)
end

การรวบรวมผลการจับคู่ไว้ในตาราง

รวบรวมผลการจับคู่ทั้งหมดไว้ในตารางเพื่อประมวลผลต่อ

local function split(s, pat)
  local parts = {}
  for token in s:gmatch(pat) do
    parts[#parts+1] = token
  end
  return parts
end
local words = split("one two three", "%S+")
print(#words)  -- 3

การดึงตัวเลข

ดึงจำนวนเต็มทั้งหมดจากสตริงด้วยรูปแบบ %d+

local s = "x=10, y=20, z=30"
for n in s:gmatch("%d+") do
  print(tonumber(n))
end

การใช้ค่าที่จับได้ใน gmatch

เมื่อรูปแบบมีค่าที่จับได้ การวนซ้ำแต่ละครั้งจะส่งคืนกลุ่มที่จับได้แทนผลการจับคู่ทั้งหมด

local s = "from=Alice, to=Bob, cc=Carol"
for k, v in s:gmatch("(%w+)=(%w+)") do
  print(k, "->", v)
end

ตัวแบ่งข้อมูล CSV

แบ่งบรรทัด CSV โดยจับทุกอย่างที่อยู่ระหว่างจุลภาค

local csv = "apple,banana,cherry,date"
for field in (csv .. ","):gmatch("([^,]*),") do
  print(field)
end

การแยกวิเคราะห์คู่คีย์-ค่า

แยกวิเคราะห์สตริงส่วนหัวรูปแบบ HTTP ให้อยู่ในตารางคู่คีย์-ค่า

local headers = "Content-Type: text/html; Content-Length: 1234"
local parsed = {}
for k, v in headers:gmatch("([%w%-]+): ([^;]+)") do
  parsed[k] = v:match("^%s*(.-)%s*$")
end

การนับจำนวนครั้งที่รูปแบบปรากฏ

นับว่ารูปแบบหนึ่งปรากฏในสตริงกี่ครั้ง

local function count(s, pat)
  local n = 0
  for _ in s:gmatch(pat) do n = n + 1 end
  return n
end
print(count("banana", "an"))  -- 2

ตัวแบ่งประโยค

แบ่งข้อความเป็นประโยคโดยจับข้อความไปจนถึงเครื่องหมายวรรคตอน

local text = "Hello. How are you? Fine!"
for sent in text:gmatch("[^.!?]+[.!?]?") do
  print(sent:match("^%s*(.-)%s*$"))
end

gmatch เทียบกับ string.find ในลูป

gmatch เป็นวิธีที่แนะนำสำหรับวนซ้ำผ่านผลการจับคู่ทั้งหมด การใช้ string.find ในลูป while ทำให้โค้ดยาวกว่าและมีโอกาสเกิดข้อผิดพลาดมากกว่า

ข้อควรระวังเกี่ยวกับยูนิโค้ด

รูปแบบของ Lua ทำงานกับไบต์ อักขระ UTF-8 แบบหลายไบต์อาจจับคู่กับรูปแบบอักขระเดี่ยวได้ไม่ถูกต้อง หากต้องการรองรับยูนิโค้ดอย่างสมบูรณ์ ให้ใช้ไลบรารี UTF-8

คำถามเกี่ยวกับ gmatch

for w in s:gmatch("%S+") do วนซ้ำผ่านอะไร

สรุป: string.gmatch

string.gmatch เป็นตัวแบ่งข้อมูลมาตรฐานของ Lua ใช้แบ่งสตริง ดึงตัวเลขทั้งหมด แยกวิเคราะห์คู่คีย์-ค่า และนับจำนวนครั้งที่รูปแบบปรากฏภายในลูปตัววนซ้ำที่อ่านง่าย

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

บทเรียน “string.gmatch สำหรับการแยกโทเคน” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “string.gmatch สำหรับการแยกโทเคน”

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

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

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

บทเรียน “string.gmatch สำหรับการแยกโทเคน” ใช้เวลานานแค่ไหน

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

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

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

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

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