พื้นฐาน regexp
คอมไพล์และจับคู่รูปแบบ
พื้นฐาน regexp เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
นิพจน์ปกติคืออะไร
นิพจน์ปกติ (regexp) คือรูปแบบที่อธิบายชุดของสตริง Go มีนิพจน์ปกติให้ใช้ผ่านแพ็กเกจ regexp
นิพจน์เหล่านี้เหมาะอย่างยิ่งสำหรับตรวจสอบความถูกต้องและค้นหาข้อความ
package main
import (
"fmt"
"regexp"
)
func main() {
matched, _ := regexp.MatchString("go+", "gooo")
fmt.Println(matched)
}จับคู่ด่วนด้วย MatchString
regexp.MatchString(pattern, s) รายงานว่ารูปแบบปรากฏอยู่ที่ใดก็ตามใน s หรือไม่ โดยคืนค่าบูลีนและข้อผิดพลาด
package main
import (
"fmt"
"regexp"
)
func main() {
ok, _ := regexp.MatchString("cat", "the cat sat")
fmt.Println(ok)
}การคอมไพล์รูปแบบ
หากต้องใช้ซ้ำหลายครั้ง ให้คอมไพล์ครั้งเดียวด้วย regexp.Compile ซึ่งคืนค่า *regexp.Regexp ที่นำกลับมาใช้ได้ และคืนข้อผิดพลาดหากรูปแบบไม่ถูกต้อง
package main
import (
"fmt"
"regexp"
)
func main() {
re, err := regexp.Compile("[0-9]+")
fmt.Println(re.MatchString("abc123"), err)
}ใช้ MustCompile กับค่าคงที่
regexp.MustCompile จะทำให้โปรแกรมหยุดทำงานทันทีหากรูปแบบไม่ถูกต้อง ใช้กับรูปแบบตายตัวที่ทราบตั้งแต่เวลาคอมไพล์ โดยทั่วไปคือตัวแปรระดับแพ็กเกจ
package main
import (
"fmt"
"regexp"
)
var digits = regexp.MustCompile("[0-9]+")
func main() {
fmt.Println(digits.MatchString("order 42"))
}คลาสอักขระ
วงเล็บเหลี่ยมใช้กำหนดชุดอักขระที่อนุญาต [aeiou] จะจับคู่อักขระสระใด ๆ ส่วนช่วงอย่าง [a-z] จะจับคู่อักขระในช่วงนั้น
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[a-z]+")
fmt.Println(re.MatchString("Hello"))
}คลาสที่กำหนดไว้ล่วงหน้า
ทางลัดช่วยให้ใช้ชุดอักขระทั่วไปได้ง่ายขึ้น: \d คือหลักตัวเลข, \w คืออักขระคำ, \s คือช่องว่าง ในสตริงของ Go ต้องใส่อักขระหลีกให้แบ็กสแลช
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("\\d+")
fmt.Println(re.MatchString("abc 99"))
}ตัวระบุจำนวน
ตัวระบุจำนวนบอกว่าต้องจับคู่กี่ครั้ง:
*ศูนย์ครั้งขึ้นไป+หนึ่งครั้งขึ้นไป?ศูนย์หรือหนึ่งครั้ง{2,4}ช่วงจำนวนครั้ง
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("a{2,3}")
fmt.Println(re.MatchString("aaa"))
fmt.Println(re.MatchString("a"))
}จุดยึด
จุดยึดกำหนดตำแหน่งของการจับคู่: ^ หมายถึงจุดเริ่มต้นของข้อความ และ $ หมายถึงจุดสิ้นสุด ใช้ทั้งสองตัวเพื่อบังคับให้จับคู่กับสตริงทั้งหมด
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("^go$")
fmt.Println(re.MatchString("go"))
fmt.Println(re.MatchString("going"))
}การสลับทางเลือกและกลุ่ม
เครื่องหมายไปป์ | หมายถึง OR และวงเล็บใช้จัดกลุ่มส่วนต่าง ๆ เข้าด้วยกัน (cat|dog)s? จะจับคู่กับ cat, cats, dog หรือ dogs
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(cat|dog)s?")
fmt.Println(re.MatchString("dogs"))
}การตรวจสอบรูปแบบ
รูปแบบที่มีจุดยึดเหมาะสำหรับสร้างตัวตรวจสอบ ในที่นี้เราตรวจสอบรหัสรูปแบบ ZIP อย่างง่ายที่ประกอบด้วยหลักตัวเลขห้าหลักพอดี
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("^\\d{5}$")
fmt.Println(re.MatchString("12345"))
fmt.Println(re.MatchString("123"))
}การจับคู่กับไบต์
เมธอดมีทั้งรูปแบบที่รับสตริงและส่วนไบต์ Match ทำงานกับ []byte เช่นเดียวกับ MatchString
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.Match([]byte("id7")))
}ตรวจสอบความเข้าใจ
ฟังก์ชันใดทำให้โปรแกรมหยุดทำงานเมื่อรูปแบบไม่ถูกต้อง และเหมาะที่สุดสำหรับรูปแบบตายตัว
สรุปทบทวน: พื้นฐาน regexp
คุณได้เรียนรู้แนวคิดพื้นฐานแล้ว:
- จับคู่ได้อย่างรวดเร็วด้วย
MatchStringและคอมไพล์ด้วยCompileหรือMustCompile - สร้างรูปแบบจากคลาส ตัวระบุจำนวน จุดยึด และกลุ่ม
- ใช้
^และ$เป็นจุดยึดเพื่อตรวจสอบสตริงทั้งหมด
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("^[a-z]+@[a-z]+$")
fmt.Println(re.MatchString("hi@host"))
}คำถามที่พบบ่อย
บทเรียน “พื้นฐาน regexp” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐาน regexp” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน regexp”
คอมไพล์และจับคู่รูปแบบ คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “พื้นฐาน regexp” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ