รูปแบบนิพจน์ประจำและคลาสอักขระ
\d, \w, \s, ., ^, $, +, *, ?, {n,m}, คลาสอักขระ [a-z] และการปฏิเสธ [^...]
รูปแบบนิพจน์ประจำและคลาสอักขระ เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดนิพจน์ทั่วไปจึงสำคัญต่อปัญญาประดิษฐ์ด้านข้อความ
ปัญญาประดิษฐ์ด้านข้อความเริ่มต้นจากข้อความดิบที่ยุ่งเหยิง นิพจน์ทั่วไป (regex) เป็นภาษาขนาดกะทัดรัดสำหรับค้นหาและดึงรูปแบบต่าง ๆ เช่น หมายเลขโทรศัพท์ วันที่ แฮชแท็ก และ URL เพื่อให้คุณทำความสะอาดและจัดโครงสร้างข้อความก่อนป้อนให้โมเดล
หลักสูตรนี้สอนรูปแบบต่าง ๆ โมดูล re กลุ่ม และกระบวนการประมวลผลทำความสะอาดข้อความจริง
อักขระตรงตัว
รูปแบบที่ง่ายที่สุดคือข้อความตรงตัว ซึ่งจะตรงกับอักขระเหล่านั้นอย่างพอดี นิพจน์ทั่วไปจะแยกแยะตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเป็นค่าเริ่มต้น
cat ตรงกับ "cat" ใน "the cat sat" แต่ไม่ตรงกับ "Cat"
import re
print(re.findall("cat", "the cat sat on a cat mat"))
# ["cat", "cat"]เมตาอักขระจุด
จุด . ตรงกับอักขระเดี่ยวใด ๆ ยกเว้นอักขระขึ้นบรรทัดใหม่ จุดนี้ทำหน้าที่เป็นอักขระแทน
c.t ตรงกับ "cat", "cot", "c9t" หรือข้อความใด ๆ ที่มี c ตามด้วยอักขระหนึ่งตัว แล้วจึงตามด้วย t
import re
print(re.findall("c.t", "cat cot cut c@t"))
# ["cat", "cot", "cut", "c@t"]กลุ่มตัวเลข คำ และช่องว่าง
กลุ่มอักขระแบบย่อครอบคลุมกลุ่มที่ใช้บ่อย:
\d— ตัวเลขหนึ่งหลัก (0-9)\w— อักขระคำ (ตัวอักษร ตัวเลข หรือขีดล่าง)\s— อักขระช่องว่าง (ช่องว่าง แท็บ หรือขึ้นบรรทัดใหม่)
import re
print(re.findall("\d", "a1b2c3")) # ["1", "2", "3"]
print(re.findall("\w", "a_1!")) # ["a", "_", "1"]
print(re.findall("\s", "a b\tc")) # [" ", "\t"]กลุ่มที่ปฏิเสธ
รูปแบบตัวพิมพ์ใหญ่จะปฏิเสธกลุ่มนั้น:
\D— สิ่งใดก็ตามที่ไม่ใช่ตัวเลข (NOT ตัวเลข)\W— NOT อักขระคำ\S— NOT อักขระช่องว่าง
import re
print(re.findall("\D", "a1b2")) # ["a", "b"]
print(re.findall("\S", "a b c")) # ["a", "b", "c"]ชุดอักขระกำหนดเองด้วย [ ]
วงเล็บเหลี่ยมใช้กำหนดชุดของคุณเอง โดยจะตรงกับอักขระหนึ่งตัวที่อยู่ภายใน ช่วงใช้เครื่องหมายยัติภังค์
[aeiou]— สระใด ๆ[A-Za-z]— ตัวอักษรใด ๆ[0-9]— ตัวเลขใด ๆ (เหมือนกับ\d)
import re
print(re.findall("[A-Za-z]", "ab12CD")) # letters only
print(re.findall("[aeiou]", "hello")) # ["e", "o"]ชุดที่ปฏิเสธด้วย [^ ]
เครื่องหมายแครอต ภายในวงเล็บจะปฏิเสธชุดนั้น โดยจะตรงกับอักขระใด ๆ ที่ไม่ได้ระบุไว้
[^abc] ตรงกับทุกสิ่งยกเว้น a, b หรือ c (เครื่องหมายแครอตที่อยู่นอกวงเล็บคือจุดยึด ซึ่งจะกล่าวถึงในหัวข้อถัดไป)
import re
print(re.findall("[^aeiou ]", "hello world"))
# consonants: ["h", "l", "l", "w", "r", "l", "d"]จุดยึด: ^ และ $
จุดยึดจะตรงกับตำแหน่ง ไม่ใช่อักขระ:
^— จุดเริ่มต้นของสตริง (หรือบรรทัด)$— จุดสิ้นสุดของสตริง (หรือบรรทัด)
^Hello จะตรงกันก็ต่อเมื่อข้อความเริ่มต้นด้วย "Hello"
import re
print(bool(re.search("^Hello", "Hello world"))) # True
print(bool(re.search("world$", "Hello world"))) # True
print(bool(re.search("^world", "Hello world"))) # Falseตัวระบุจำนวน: + * ?
ตัวระบุจำนวนบอกว่ารายการก่อนหน้าจะซ้ำกี่ครั้ง:
+— หนึ่งครั้งขึ้นไป*— ศูนย์ครั้งขึ้นไป?— ศูนย์หรือหนึ่งครั้ง (ไม่บังคับ)
import re
print(re.findall("\d+", "abc 123 de 45")) # ["123", "45"]
print(re.findall("ab*", "a ab abb")) # ["a", "ab", "abb"]
print(re.findall("colou?r", "color colour")) # both matchตัวระบุจำนวนช่วง {n,m}
วงเล็บปีกกาใช้ระบุจำนวนที่แน่นอนหรือช่วง:
{3}— ตรงสามครั้งพอดี{2,4}— ระหว่างสองถึงสี่ครั้ง{2,}— สองครั้งขึ้นไป
เหมาะสำหรับรายการที่มีความยาวคงที่ เช่น รหัส ZIP หรือส่วนของหมายเลขโทรศัพท์
import re
print(re.findall("\d{3}", "12 345 6789")) # ["345", "678"]
print(re.findall("\d{2,4}", "1 22 3333 55555"))การประกอบส่วนต่าง ๆ เข้าด้วยกัน
รูปแบบจริงจะประกอบด้วยกลุ่ม ชุด จุดยึด และตัวระบุจำนวน รูปแบบนี้ตรงกับหมายเลขโทรศัพท์ US อย่างง่าย เช่น 555-123-4567:
\d{3}-\d{3}-\d{4} — ตัวเลขสามหลัก ยัติภังค์ ตัวเลขสามหลัก ยัติภังค์ และตัวเลขสี่หลัก
import re
text = "Call 555-123-4567 or 999-888-7777"
print(re.findall("\d{3}-\d{3}-\d{4}", text))
# ["555-123-4567", "999-888-7777"]ตรวจสอบด่วน: ตัวระบุจำนวน
คุณต้องการจับคู่ตัวเลขที่ต่อเนื่องกันตั้งแต่หนึ่งหลักขึ้นไป
ทบทวน: รูปแบบและกลุ่มอักขระ
ตอนนี้คุณรู้จักส่วนประกอบพื้นฐานของนิพจน์ทั่วไปแล้ว:
- อักขระตรงตัวและอักขระแทน
. - กลุ่ม
\d \w \sและรูปแบบปฏิเสธของกลุ่มเหล่านี้\D \W \S - ชุดกำหนดเอง
[A-Za-z]และชุดที่ปฏิเสธ[^abc] - จุดยึด
^และ$ - ตัวระบุจำนวน
+ * ?และช่วง{n,m}
ถัดไป: ฟังก์ชันของโมดูล Python re
คำถามที่พบบ่อย
บทเรียน “รูปแบบนิพจน์ประจำและคลาสอักขระ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “รูปแบบนิพจน์ประจำและคลาสอักขระ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบนิพจน์ประจำและคลาสอักขระ”
\d, \w, \s, ., ^, $, +, *, ?, {n,m}, คลาสอักขระ [a-z] และการปฏิเสธ [^...] คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “รูปแบบนิพจน์ประจำและคลาสอักขระ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- รูปแบบนิพจน์ประจำและคลาสอักขระ
- โมดูล re: search, match, findall, sub
- กลุ่มจับและกลุ่มที่มีชื่อ
- การทำความสะอาดข้อความสำหรับปัญญาประดิษฐ์ด้วยนิพจน์ רגูลาร์