Regex ในการค้นหาและแทนที่: คู่มือฉบับเข้าใจง่ายพร้อม 7 สูตรตัวอย่าง
นิพจน์ทั่วไป (Regular expression) หรือ regex คือรูปแบบที่เขียนด้วยสัญลักษณ์ไม่กี่ตัว ในเครื่องมือค้นหาและแทนที่ ให้เปิด Regex แล้วช่องค้นหาจะอ่านเป็นรูปแบบแทนข้อความธรรมดา ดังนั้นจุดจะหมายถึงอักขระตัวใดก็ได้ ไม่ใช่จุดตรงตัว รูปแบบที่ใช้บ่อยส่วนใหญ่ต้องใช้สัญลักษณ์เพียงไม่กี่ตัว สำหรับคำธรรมดาให้ปิด Regex เพราะเมื่อปิดแล้ว สัญลักษณ์ทุกตัวจะถูกมองเป็นตัวอักษรตรงตัว
ค้นหาและแทนที่ข้อความแทนที่คำทุกจุดในข้อความใช้ฟรีสัญลักษณ์ที่ต้องใช้
| สัญลักษณ์ | จับคู่กับ |
|---|---|
| . | อักขระใดก็ได้หนึ่งตัว ยกเว้นการขึ้นบรรทัดใหม่ |
| * | รายการก่อนหน้า ศูนย์ครั้งหรือมากกว่า |
| + | รายการก่อนหน้า หนึ่งครั้งหรือมากกว่า |
| ? | รายการก่อนหน้า หนึ่งครั้งหรือไม่มีเลย |
| [ ] | อักขระหนึ่งตัวจากในวงเล็บ เช่น [aeiou] หรือ [0-9] |
| \d \w \s | ตัวเลขหลัก; ตัวอักษร ตัวเลข หรือขีดล่าง; เว้นวรรค แท็บ หรือการขึ้นบรรทัดใหม่ |
| ( ) | กลุ่ม ซึ่งแทนที่สามารถนำกลับมาใช้เป็น $1, $2 และอื่น ๆ |
| ^ และ $ | จุดเริ่มต้นและจุดสิ้นสุดของข้อความทั้งหมด |
อักษรตัวพิมพ์ใหญ่จะกลับความหมายของกลุ่ม: \D คืออักขระที่ไม่ใช่ตัวเลข และ \S คืออักขระที่ไม่ใช่ช่องว่าง
มีสองข้อที่ควรทราบสำหรับเครื่องมือนี้ ประการแรก \w จับคู่เฉพาะตัวอักษรภาษาอังกฤษ ตัวเลข และขีดล่างเท่านั้น สำหรับตัวอักษรที่มีเครื่องหมายกำกับ ให้ใช้ \p{L} ซึ่งจับคู่ตัวอักษรของทุกภาษา ประการที่สอง ^ และ $ จับคู่จุดเริ่มต้นและจุดสิ้นสุดของข้อความทั้งหมด ไม่ใช่ของแต่ละบรรทัด สูตรด้านล่างจึงใช้การขึ้นบรรทัดใหม่ภายในรูปแบบแทน
กลุ่มและ $1
ใส่บางส่วนของรูปแบบไว้ในวงเล็บ แล้วเครื่องมือจะจดจำสิ่งที่ส่วนนั้นจับคู่ได้ ในช่องแทนที่ $1 คือกลุ่มแรก $2 คือกลุ่มที่สอง และ $& คือผลการจับคู่ทั้งหมด คู่มือ FAQ ของเครื่องมือเองมีตัวอย่างคลาสสิก: เมื่อค้นหาเป็น (\w+)@(\w+) และแทนที่เป็น $2 at $1 ข้อความ name@site จะกลายเป็น site at name กลุ่มจะใช้งานได้เฉพาะเมื่อเปิด Regex เท่านั้น เมื่อปิดอยู่ $1 จะถูกพิมพ์ตามตัวอักษร
สร้างรูปแบบทีละขั้นตอน
เริ่มจากข้อความที่ต้องการค้นหาแบบตรงตัว แล้วแทนที่ส่วนที่เปลี่ยนแปลงด้วยสัญลักษณ์ วันที่ เช่น 2026-11-04 เขียนได้เป็น \d{4}-\d{2}-\d{2} โดย {4} หมายถึงรายการก่อนหน้าต้องมีพอดี 4 ตัว ลองทดสอบรูปแบบอย่างง่ายก่อน และค่อยเพิ่มความเข้มงวดก็ต่อเมื่อไฮไลต์แสดงว่าจับคู่มากเกินไป
หากต้องการดูว่ารูปแบบทำงานอย่างไรโดยไม่เปลี่ยนแปลงอะไร ทดสอบ Regex จะรันรูปแบบกับข้อความตัวอย่างและแสดงรายการการจับคู่ทุกรายการ
7 สูตรตัวอย่าง
เปิด Regex สำหรับแต่ละสูตร เครื่องมือจะไฮไลต์การจับคู่และแสดงจำนวนก่อนที่คุณจะคัดลอก ดังนั้นควรทดสอบแต่ละสูตรกับสำเนาของข้อความก่อน
- สลับชื่อจริงกับนามสกุล. ค้นหา
(\w+) (\w+)แทนที่ด้วย$2, $1"Ada Lovelace" จะกลายเป็น "Lovelace, Ada" สำหรับชื่อที่มีเครื่องหมายกำกับ ให้ใช้(\p{L}+) (\p{L}+)รูปแบบนี้ใช้ได้เฉพาะชื่อที่มีสองคำเท่านั้น - ลบช่องว่างท้ายบรรทัด. ค้นหา
[ \t]+(?=\r?\n|$)แทนที่ให้เว้นว่าง มันจับคู่เว้นวรรคหรือแท็บที่อยู่ก่อนการขึ้นบรรทัดใหม่หรือจุดสิ้นสุดของข้อความ lookahead(?=...)ตรวจสอบการขึ้นบรรทัดโดยไม่ลบออก และ\r?ครอบคลุมการขึ้นบรรทัดแบบ Windows แก้ข้อความที่วางมา มีตัวเลือกตัดช่องว่างของแต่ละบรรทัดที่ทำงานเหมือนกัน - ยุบช่องว่างซ้ำ. ค้นหา
{2,}ซึ่งคือเว้นวรรคที่ซ้ำสองครั้งขึ้นไป และแทนที่ด้วยเว้นวรรคหนึ่งตัว เว้นวรรคตั้งแต่สองตัวขึ้นไปจะกลายเป็นหนึ่งตัว มันยังทำให้การเยื้องลดลงด้วย ดังนั้นให้ข้ามสูตรนี้สำหรับโค้ด - เพิ่มคำนำหน้าให้ทุกบรรทัด. ค้นหา
(.+)แทนที่ด้วย- $1อักขระหนึ่งตัวขึ้นไปที่อยู่ระหว่างการขึ้นบรรทัดแต่ละชุดคือหนึ่งบรรทัด และ $1 เก็บบรรทัดนั้นไว้ บรรทัดว่างจะถูกข้าม ใช้รูปแบบหนึ่งตัวขึ้นไปคือ.+ไม่ใช่รูปแบบศูนย์ตัวขึ้นไป เพราะรูปแบบศูนย์ตัวขึ้นไปจะจับคู่ตำแหน่งว่างระหว่างการขึ้นบรรทัดด้วย ทำให้บรรทัดว่างได้เครื่องหมายขีดที่ไม่ตั้งใจติดมา - ลบบรรทัดว่าง. ค้นหา
\n\s*(?=\n)แทนที่ให้เว้นว่าง การจับคู่คือการขึ้นบรรทัดใหม่และช่องว่างใด ๆ ที่ตามมา จนถึงการขึ้นบรรทัดถัดไป โดยการขึ้นบรรทัดถัดไปนั้นจะถูกเก็บไว้ วิธีนี้ลบบรรทัดว่างได้ รวมถึงบรรทัดที่มีแต่เว้นวรรค และเนื่องจาก\sจับคู่การคืนรถ (carriage return) ด้วย การขึ้นบรรทัดแบบ Windows จึงใช้ได้เช่นกัน บรรทัดว่างที่อยู่บนสุดของข้อความจะยังคงอยู่ เครื่องมือ ลบบรรทัดซ้ำ มีตัวเลือกลบบรรทัดว่างที่ทำหน้าที่เดียวกันด้วยการติ๊กเพียงครั้งเดียว - หนึ่งรายการต่อหนึ่งบรรทัด. ค้นหา
,[ ]*แทนที่ด้วย\nแล้วติ๊กช่อง อ่าน \n และ \t ในช่องแทนที่ "apples, pears, plums" จะกลายเป็นสามบรรทัด หากไม่ติ๊ก \n จะยังคงเป็นอักขระสองตัว คือ เครื่องหมายแบ็กสแลชและตัว n - ใส่วงเล็บครอบตัวเลขทุกตัว. ค้นหา
\d+แทนที่ด้วย[$&]"Order 42 and 7" จะกลายเป็น "Order [42] and [7]" $& คือผลการจับคู่ทั้งหมด จึงไม่ต้องใช้กลุ่ม
ตรวจสอบก่อนคัดลอก
- จำนวนการจับคู่และไฮไลต์แสดงสิ่งที่รูปแบบจับได้ หากไฮไลต์ผิด ผลลัพธ์ก็จะผิดด้วย
- รูปแบบที่มีข้อผิดพลาดจะแสดงข้อความ "รูปแบบไม่ถูกต้อง" ใต้กล่องข้อความ แก้รูปแบบแล้วผลลัพธ์จะอัปเดต
- ปล่อยช่องแทนที่ว่างไว้เพื่อลบทุกการจับคู่ ข้อความในช่องจะบอกไว้
- ตัวเลือกตรงตามตัวพิมพ์ปิดอยู่เป็นค่าเริ่มต้น ดังนั้นสูตรต่าง ๆ จะจับคู่ตัวพิมพ์ใหญ่และเล็กเหมือนกัน ให้เปิดตัวเลือกนี้เมื่อตัวพิมพ์มีความสำคัญ
- หากต้องการค้นหาจุดเต็มหรือวงเล็บตรงตัวขณะเปิด Regex ให้ใส่เครื่องหมายแบ็กสแลชไว้ข้างหน้า: \. หรือ \[
กรณีพิเศษ
- การจับคู่แบบโลภ.
.+จะจับให้มากที่สุดเท่าที่ทำได้ หากต้องการหยุดที่การจับคู่แรก ให้เพิ่มเครื่องหมายคำถาม:.+?ข้อนี้สำคัญกับข้อความอย่าง<b>.+</b>ซึ่งอาจวิ่งข้ามหลายแท็ก - ทั้งคำ. สำหรับคำธรรมดา การปิด Regex ปลอดภัยกว่า ตัวเลือกเฉพาะคำทั้งคำจะป้องกันไม่ให้ cat จับคู่กับ category ตามที่ FAQ ของเครื่องมืออธิบาย คู่มือการค้นหาและแทนที่ มีตัวอย่างเพิ่มเติมของการเปลี่ยนแปลงทั้งคำ
- เก็บต้นฉบับไว้. ผลลัพธ์จะปรากฏในกล่องของตัวเอง และข้อความต้นฉบับจะคงเดิม เมื่อพอใจแล้ว ให้คัดลอกผลลัพธ์ออกมา
แปลจาก ฉบับภาษาอังกฤษ ด้วยความช่วยเหลือของ AI
ความคิดเห็น
ยังไม่มีความคิดเห็น มาเป็นคนแรกกันเลย


