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*$"))
endgmatch เทียบกับ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ไวยากรณ์รูปแบบ Lua
- การจับกลุ่มและ string.match
- string.gmatch สำหรับการแยกโทเคน
- string.gsub สำหรับการแปลง