ฉันต้องการที่จะเขียนฟังก์ชั่น (หรือใช้ที่มีอยู่) ที่จะใช้สตริงใด ๆ และผลิต Regex หนีอย่างถูกต้องที่ตรงกับสตริงเท่านั้น วิธีที่เร็วและง่ายที่สุดในการทำเช่นนี้คืออะไร?
ฉันต้องการที่จะเขียนฟังก์ชั่น (หรือใช้ที่มีอยู่) ที่จะใช้สตริงใด ๆ และผลิต Regex หนีอย่างถูกต้องที่ตรงกับสตริงเท่านั้น วิธีที่เร็วและง่ายที่สุดในการทำเช่นนี้คืออะไร?
คำตอบ:
คุณกำลังมองหาregexp-quote
:
ฟังก์ชันนี้ส่งคืนนิพจน์ทั่วไปที่มีการจับคู่ที่ตรงกันเท่านั้นคือสตริง การใช้นิพจน์ทั่วไปนี้ในการค้นหาจะสำเร็จก็ต่อเมื่ออักขระตัวถัดไปในบัฟเฟอร์เป็นสตริง ใช้มันในฟังก์ชั่นการค้นหาจะประสบความสำเร็จหากข้อความที่ค้นหามีสตริง
สิ่งนี้อนุญาตให้คุณร้องขอการจับคู่สตริงที่แน่นอนหรือค้นหาเมื่อเรียกใช้ฟังก์ชันที่ต้องการนิพจน์ทั่วไป
regexp-quote
มีการใช้ทางเลือกที่ดีในการหลบหนีอักขระพิเศษในสตริงอย่างถูกต้องสำหรับการใช้งานเมื่อฟังก์ชั่นคาดว่า regexp ใน "รูปแบบ Emacs" - เช่นหากคุณจำไม่ได้ว่ามีเครื่องหมายแบ็กสแลชจำนวนเท่าไรregexp-quote
ในบัฟเฟอร์หรือscratch
ielm