Go:
การใช้เรกุลาร์เอ็กเพรสชัน
วิธีการ:
ใน Go, แพ็กเกจ regexp
จัดเตรียมฟังก์ชันนิพจน์ปกติ นี่คือคู่มือขั้นตอนตามขั้นตอนเกี่ยวกับวิธีใช้:
- การคอมไพล์นิพจน์ปกติ
ก่อนอื่น, คอมไพล์รูปแบบ regex ของคุณโดยใช้ regexp.Compile
การจัดการข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการคอมไพล์เป็นปฏิบัติการที่ดี
package main
import (
"fmt"
"regexp"
)
func main() {
pattern := "go+"
r, err := regexp.Compile(pattern)
if err != nil {
fmt.Println("Error compiling regex:", err)
return
}
fmt.Println("Regex compiled successfully")
}
- การจับคู่สตริง
ตรวจสอบว่าสตริงตรงกับรูปแบบโดยใช้เมธอด MatchString
matched := r.MatchString("goooooogle")
fmt.Println("Matched:", matched) // ผลลัพธ์: Matched: true
- การหาคู่ที่ตรงกัน
หาคู่แรกที่ตรงกันในสตริง, ใช้เมธอด FindString
match := r.FindString("golang gooooo")
fmt.Println("พบ:", match) // ผลลัพธ์: พบ: gooooo
- การหาคู่ที่ตรงกันทั้งหมด
สำหรับการหาคู่ที่ตรงกันทั้งหมด, FindAllString
รับสตริงนำเข้าและจำนวนเต็ม n หาก n >= 0, มันจะคืนค่าไม่เกิน n คู่ที่ตรงกัน; หาก n < 0, มันจะคืนค่าคู่ที่ตรงกันทั้งหมด
matches := r.FindAllString("go gooo gooooo", -1)
fmt.Println("คู่ที่ตรงกันทั้งหมด:", matches) // ผลลัพธ์: คู่ที่ตรงกันทั้งหมด: [go gooo gooooo]
- การแทนที่คู่ที่ตรงกัน
เพื่อแทนที่คู่ที่ตรงกันด้วยสตริงอื่น, ReplaceAllString
เป็นตัวเลือกที่มีประโยชน์
result := r.ReplaceAllString("go gooo gooooo", "Java")
fmt.Println("แทนที่:", result) // ผลลัพธ์: แทนที่: Java Java Java
การขุดลึก
แนะนําในไลบรารีมาตรฐานของ Go, แพ็กเกจ regexp
จัดการการค้นหาและการจับคู่รูปแบบการนิพจน์ปกติตามไวยากรณ์ของ Perl. ภายใต้ฮู้ด, เอนจิน regex ของ Go คอมไพล์รูปแบบเป็นรูปแบบของไบต์โค้ด, ซึ่งจากนั้นจะถูกทำการทดสอบโดยเอนจินการจับคู่ที่เขียนด้วย Go เอง. การดำเนินการนี้สละความเร็วบางส่วนที่พบในการดำเนินการโดยตรงบนฮาร์ดแวร์เพื่อความปลอดภัยและการใช้งานง่าย, หลีกเลี่ยงกับดักของการบังคับใช้ข้อมูลล้นที่พบในไลบรารี่ที่ใช้ C.
ถึงแม้จะมีพลัง, regex ใน Go ไม่ได้เสมอเป็นโซลูชันที่เหมาะสมที่สุดสำหรับการจับคู่รูปแบบ, โดยเฉพาะอย่างยิ่งเมื่อจัดการกับข้อมูลที่มีโครงสร้างสูงเช่น JSON หรือ XML. ในกรณีเหล่านี้, ปาร์เซอร์หรือไลบรารี่ที่ออกแบบมาสำหรับรูปแบบข้อมูลเหล่านี้มีประสิทธิภาพและความน่าเชื่อถือที่ดีกว่า. อย่างไรก็ตาม, สำหรับงานที่เกี่ยวข้องกับการประมวลผลข้อความที่ซับซ้อนโดยไม่มีโครงสร้างที่กำหนดไว้อย่างชัดเจน, regex ยังคงเป็นเครื่องมือสำคัญในชุดเครื่องมือของโปรแกรมเมอร์, มีความสมดุลของพลังและความยืดหยุ่นที่น้อยทางเลือกอื่นสามารถเทียบได้.