บทนำสู่นิพจน์ปกติ (Regex)
ทำความเข้าใจไวยากรณ์และแนวคิดหลักของนิพจน์ปกติ เพื่อจับคู่รูปแบบข้อความได้อย่างทรงพลัง
บทนำสู่นิพจน์ปกติ (Regex) เป็นบทเรียน Linux Command Line & Bash Scripting Mastery ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Linux Command Line & Bash Scripting Mastery และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Linux Command Line & Bash Scripting Mastery มีบทเรียนทั้งหมด 4 บทเรียน
นิพจน์ทั่วไปคืออะไร
นิพจน์ทั่วไป หรือที่มักเรียกสั้น ๆ ว่า เรกซ์ คือรูปแบบทรงพลังที่ใช้ค้นหาและจัดการข้อความ
ลองนึกภาพว่านิพจน์เหล่านี้เป็นคำค้นหาที่ทรงพลังยิ่งขึ้น ซึ่งสามารถจับคู่ลำดับ อักขระ หรือแม้แต่ตำแหน่งเฉพาะภายในข้อความได้
นิพจน์ทั่วไปถูกใช้อย่างแพร่หลายในการเขียนโปรแกรม การเขียนสคริปต์ และเครื่องมือบรรทัดคำสั่งใน Linux เช่น grep, sed และ awk
การจับคู่อักขระตามตัวอักษร
เรกซ์ที่ง่ายที่สุดจะจับคู่อักขระตามตัวอักษรแบบตรงกันทุกประการ หากคุณค้นหา 'apple' ก็จะพบข้อความ 'apple' เท่านั้น
มาใช้คำสั่ง grep (การพิมพ์นิพจน์ทั่วไปแบบครอบคลุม) เพื่อสาธิตการจับคู่พื้นฐานนี้กัน
echo "apple" > fruits.txt
echo "banana" >> fruits.txt
echo "pineapple" >> fruits.txt
grep "apple" fruits.txt
rm fruits.txtจุด: อักขระใดก็ได้หนึ่งตัว
จุด (.) เป็นอักขระพิเศษที่จับคู่กับอักขระใดก็ได้หนึ่งตัว ยกเว้นการขึ้นบรรทัดใหม่
จุดทำหน้าที่เหมือนอักขระแทนที่สำหรับหนึ่งตำแหน่ง ตัวอย่างเช่น c.t จะจับคู่กับ "cat", "cot" หรือ "cut" ได้
echo "cat" > words.txt
echo "cot" >> words.txt
echo "cut" >> words.txt
echo "coat" >> words.txt
grep "c.t" words.txt
rm words.txtเครื่องหมายดอกจัน: ศูนย์ครั้งขึ้นไป (*)
เครื่องหมายดอกจัน (*) เป็นตัวระบุจำนวนที่จับคู่กับการปรากฏของอักขระหรือกลุ่มที่อยู่ก่อนหน้าทันที ตั้งแต่ศูนย์ครั้งขึ้นไป
ตัวอย่างเช่น colou*r จะจับคู่กับ "color" (ไม่มี 'u') และ "colour" (มี 'u' หนึ่งตัว) ได้
echo "color" > spellings.txt
echo "colour" >> spellings.txt
echo "colouuur" >> spellings.txt
echo "cold" >> spellings.txt
grep "colou*r" spellings.txt
rm spellings.txtเครื่องหมายบวก: หนึ่งครั้งขึ้นไป (+)
เครื่องหมายบวก (+) จับคู่กับการปรากฏของอักขระหรือกลุ่มก่อนหน้าหนึ่งครั้งขึ้นไป
ต่างจาก * ตรงที่องค์ประกอบนั้นต้องปรากฏอย่างน้อยหนึ่งครั้ง ดังนั้น go+gle จะจับคู่กับ "google" และ "gooogle" ได้ แต่ไม่จับคู่กับ "ggle"
หมายเหตุ: หากต้องการให้ +, ? และ {} ทำงานโดยตรงกับ grep โดยทั่วไปคุณต้องใช้ตัวเลือก -E สำหรับนิพจน์ทั่วไปแบบขยาย
echo "google" > search.txt
echo "goooogle" >> search.txt
echo "ggle" >> search.txt
grep -E "go+gle" search.txt
rm search.txtเครื่องหมายคำถาม: ศูนย์ครั้งหรือหนึ่งครั้ง (?)
เครื่องหมายคำถาม (?) จับคู่กับการปรากฏของอักขระหรือกลุ่มก่อนหน้าศูนย์ครั้งหรือหนึ่งครั้ง
เครื่องหมายนี้ทำให้อักขระเป็นตัวเลือกได้ ตัวอย่างเช่น colou?r จะจับคู่กับ "color" (ไม่มี 'u') และ "colour" (มี 'u' หนึ่งตัว) ได้
echo "color" >> spellings.txt
echo "colour" >> spellings.txt
echo "colouuur" >> spellings.txt
grep -E "colou?r" spellings.txt
rm spellings.txtจุดยึด: จุดเริ่มต้น (^) และจุดสิ้นสุด ($)
จุดยึดไม่ได้จับคู่อักขระ แต่จับคู่กับตำแหน่งเฉพาะในข้อความ
^จับคู่กับจุดเริ่มต้นของบรรทัด$จับคู่กับจุดสิ้นสุดของบรรทัด
ตัวอย่าง: ^apple จะจับคู่กับ "apple" เฉพาะเมื่ออยู่ต้นบรรทัด ส่วน apple$ จะจับคู่กับ "apple" เฉพาะเมื่ออยู่ท้ายบรรทัด
echo "apple pie" > menu.txt
echo "fresh apple" >> menu.txt
echo "apple" >> menu.txt
grep -E "^apple" menu.txt
grep -E "apple$" menu.txt
rm menu.txtคลาสอักขระ: วงเล็บเหลี่ยม ([])
วงเล็บเหลี่ยม ([]) ใช้กำหนดคลาสอักขระ ซึ่งจับคู่กับอักขระใดก็ได้หนึ่งตัวภายในชุดนั้น
[aeiou]จับคู่กับสระใดก็ได้หนึ่งตัว[0-9]จับคู่กับตัวเลขใดก็ได้หนึ่งตัว[a-zA-Z]จับคู่กับตัวอักษรใดก็ได้หนึ่งตัว
คุณยังสามารถใช้ [^...] เพื่อปฏิเสธคลาสได้ เช่น [^aeiou] จะจับคู่กับอักขระใดก็ได้ที่ไม่ใช่สระ
echo "cat" > animals.txt
echo "bat" >> animals.txt
echo "rat" >> animals.txt
echo "cot" >> animals.txt
grep -E "[cb]at" animals.txt
grep -E "[^cbr]at" animals.txt
rm animals.txtตัวระบุจำนวน: วงเล็บปีกกา ({})
วงเล็บปีกกา ({}) เป็นตัวระบุจำนวนที่กำหนดจำนวนการทำซ้ำที่แน่นอนของอักขระหรือกลุ่มก่อนหน้า
a{3}จับคู่กับ "aaa"a{2,}จับคู่กับ "aa", "aaa", "aaaa" และอื่น ๆ (อย่างน้อย 2 ครั้ง)a{2,4}จับคู่กับ "aa", "aaa", "aaaa" (ระหว่าง 2 ถึง 4 ครั้ง)
อย่าลืมใช้ grep -E กับตัวระบุจำนวนเหล่านี้
echo "helllo" > greetings.txt
echo "hello" >> greetings.txt
echo "helo" >> greetings.txt
grep -E "hel{2,3}o" greetings.txt
rm greetings.txtตรวจสอบนิพจน์ทั่วไปอย่างรวดเร็ว
พิจารณาข้อความเหล่านี้:
bananabanaanabanaananabna
นิพจน์ทั่วไปใดจะจับคู่ได้เฉพาะ "banana" และ "banaana"
ทบทวนพื้นฐานนิพจน์ทั่วไป
คุณได้เรียนรู้พื้นฐานของนิพจน์ทั่วไปแล้ว
- นิพจน์ทั่วไปใช้รูปแบบเพื่อค้นหาและจัดการข้อความ
- อักขระตามตัวอักษรจะจับคู่กับตัวมันเอง
- อักขระพิเศษอย่าง
.,*,+,?,^,$,[]และ{}ช่วยให้จับคู่รูปแบบได้อย่างทรงพลัง
ต่อไปคุณจะนำรูปแบบเหล่านี้ไปใช้ค้นหาข้อความขั้นสูงด้วยคำสั่ง grep และตัวเลือกต่าง ๆ ของคำสั่ง
คำถามที่พบบ่อย
บทเรียน “บทนำสู่นิพจน์ปกติ (Regex)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “บทนำสู่นิพจน์ปกติ (Regex)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Linux Command Line & Bash Scripting Mastery ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Linux Command Line & Bash Scripting Mastery มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “บทนำสู่นิพจน์ปกติ (Regex)”
ทำความเข้าใจไวยากรณ์และแนวคิดหลักของนิพจน์ปกติ เพื่อจับคู่รูปแบบข้อความได้อย่างทรงพลัง คุณปฏิบัติ Linux Command Line & Bash Scripting Mastery ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Linux Command Line & Bash Scripting Mastery หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Linux Command Line & Bash Scripting Mastery บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “บทนำสู่นิพจน์ปกติ (Regex)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Linux Command Line & Bash Scripting Mastery นี้ได้ไหม
ได้ บทเรียน Linux Command Line & Bash Scripting Mastery ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- บทนำสู่นิพจน์ปกติ (Regex)
- Grep ขั้นสูงด้วย Regex
- การรวม Regex เข้ากับ sed/awk
- กลุ่มจับคู่ การอ้างอิงย้อนกลับ และการแทนที่