มาพูดถึงนิพจน์ทั่วไปกัน
ตอนนี้ นิพจน์ทั่วไปไม่ได้มีลักษณะเฉพาะสำหรับ Python
อันที่จริง คุณจะเห็นได้ทั่วทั้งภาษาโปรแกรม
แต่ฉันจะสอนสำนวนปกติให้คุณอย่างรวดเร็ว เพราะมันมีประโยชน์มาก โดยเฉพาะเมื่อคุณกำลังทำ
เช่น การตรวจสอบความถูกต้อง เช่น การตรวจสอบว่ามีคนป้อนอีเมลที่ถูกต้อง หรือคุณมีข้อกำหนดเกี่ยวกับรหัสผ่าน
หรือคุณต้องการตรวจสอบ หากมีชิ้นส่วนของสตริงอยู่ในข้อความ
นี่คือสิ่งที่เราจะสำรวจในวิดีโอนี้
นิพจน์ทั่วไป
พวกเขาคืออะไร?
โชคดีสำหรับเรา Python มาพร้อมกับโมดูลนิพจน์ทั่วไป
จำไว้ว่านิพจน์ทั่วไปไม่ได้เจาะจงกับ Python
คุณสามารถใช้มันได้ในทุกภาษา แต่มีประโยชน์มากสำหรับการค้นหาสิ่งต่าง ๆ ในข้อความ
สมมุติว่าเรามีสตริงตรงนี้ และเราสามารถบอกว่า string search ข้างในนี้
ต่อไปได้โปรด
เราจะไปที่นั่น.
ตอนนี้ สมมติว่าฉันต้องการค้นหาบางสิ่งที่นี่
ก่อนอื่นฉันสามารถทำสิ่งนี้ได้ไหม
ฉันสามารถพูดค้นหา?
ในสตริง
มาพิมพ์กันที่นี่
และถ้าฉันคลิกเรียกใช้
ฉันได้รับความจริง
และนี่เป็นวิธีง่ายๆ ที่เราจะค้นหาบางอย่างในสตริง
เหตุใดเราจึงต้องใช้นิพจน์ทั่วไป
นิพจน์ทั่วไปมีประสิทธิภาพมากกว่านี้เล็กน้อย เพราะบางทีเราต้องการค้นหาว่าการค้นหาเกิดขึ้นในสตริงกี่ครั้ง
หรือบางทีเรามีสตริงที่ซับซ้อน
ให้ฉันแสดงให้คุณเห็นว่าฉันหมายถึงอะไร
วิธีที่เราใช้บางอย่างเช่นนิพจน์ทั่วไปคือการใช้รูปแบบนี้
ผมจึงบอกว่า r e dot แล้วใช้การค้นหาในที่นี้
และอย่างที่คุณเห็นที่นี่ เราให้รูปแบบและสตริงและธงบางส่วน
เราจะพูดถึงเรื่องนั้นในภายหลัง
ที่เราต้องพูดคือคุณต้องการทำรูปแบบใด?
ฉันต้องการค้นหาว่าสิ่งนี้มีอยู่ในสตริงหรือไม่ เพื่อที่ฉันจะได้พูดแบบนี้
แล้วให้สตริงที่แท้จริงแก่มัน
ในกรณีของเรา
นี่คือสตริงของเรา
ดังนั้นถ้าฉันเรียกใช้สิ่งนี้
ลองพิมพ์ว่าเกิดอะไรขึ้นที่นี่
เลยมาพิมพ์กัน
ถ้าฉันคลิกเรียกใช้
ไม่เป็นไร.
ฉันได้รับสิ่งที่ฉันเรียกว่าวัตถุที่ตรงกัน
นิพจน์ทั่วไปให้ผลลัพธ์ ไม่ใช่แค่จริงหรือเท็จ แต่เป็นอ็อบเจ็กต์จริงที่บอกข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้ให้เราทราบเล็กน้อย
และคุณสามารถดูได้ตรงนี้ ข้อมูลอันหนึ่งคือสแปน
ดังนั้นตำแหน่งที่มันเกิดขึ้นในสตริง มันเกิดขึ้นที่ดัชนี 17 และสิ้นสุดที่ดัชนี 21
นั่นจึงมีประโยชน์จริงๆ
เก็บข้อมูลนี้ไว้ แล้วพูดว่า a ที่นี่
แล้วเราสามารถทำอะไรกับวัตถุที่ตรงกันนี้ได้บ้าง?
อย่างแรกที่เราสามารถทำได้คือตรวจสอบสิ่งที่เรามี
อย่างแรกเลย เรามีสแปนที่เราเคยเห็น
และถ้าฉันเรียกใช้สิ่งนี้
มันบอกฉันว่าสตริงเกิดขึ้นที่ใดเป็นทูเพิล
ดังนั้นดัชนี 17 ถึงดัชนี 21
ฉันยังสามารถเริ่มต้นและเริ่มต้นได้
บอกฉันทีว่าข้อความเริ่มต้นเมื่อใด และฉันยังสามารถจัดกลุ่มได้ หรือที่จริงแล้ว ฉันยังสามารถจบการเพื่อแสดงว่าสิ้นสุดที่ใด
จากนั้นฉันก็สามารถทำ group และ group return ส่วนของ string ที่มีการจับคู่และสมมติว่ามีอีกอันในนี้
ถ้าฉันคลิก run คุณเห็นไหม
มันให้แค่ส่วนหรือส่วนของเชือกที่มีไม้ขีดเท่านั้น
ตอนนี้กลุ่มมีประโยชน์มากเมื่อเราพยายามทำการค้นหาหลายครั้ง
ในกรณีของเรา เราทำการค้นหาเพียงครั้งเดียว
ดังนั้นเราจึงมีรูปแบบที่เรากำลังพยายามจับคู่ แต่มีวิธีต่างๆ ที่เราสามารถทำการค้นหาได้หลายครั้งภายในบรรทัดเดียว
แต่ก่อนที่ผมจะให้คุณดู จะเกิดอะไรขึ้นถ้าเราทำบางสิ่งที่ไม่มีอยู่เช่นนี้ด้วยตัว
S ตัวพิมพ์ใหญ่?
ถ้าฉันคลิกเรียกใช้
ฉันได้รับข้อผิดพลาดเพราะตอนนี้ A จะไม่มีเลย เพราะถ้านิพจน์ทั่วไปไม่พบอะไรเลย ก็จะไม่มีค่ากลับมา
ดังนั้นมันจะส่งคืนวัตถุที่ตรงกันหรือไม่มีเลย
ทีนี้ เราจะทำให้มันก้าวหน้ากว่านี้ได้อย่างไร?
สิ่งหนึ่งที่เราทำได้คือสร้างรูปแบบที่เราต้องการตรวจสอบ
สมมุติว่ารูปแบบตรงนี้และรูปแบบนี้ เราจะใช้คอมไพล์จุดนิพจน์ทั่วไป
และการคอมไพล์จะทำให้เราสามารถให้รูปแบบได้ เช่นเดียวกับที่เราทำที่นี่
สมมุติว่าในนี้ ผมแค่ต้องการตรวจสอบสิ่งนี้
ทีนี้ รูปแบบนี้ที่ฉันใช้แทนการค้นหาของเราได้
ตอนนี้ฉันสามารถใช้รูปแบบได้แล้ว
เพื่อทำการค้นหาสำหรับฉัน
ดังนั้น อีกครั้ง ถ้าฉันเรียกใช้สิ่งนี้
ตอนนี้ฉันไม่ต้องผ่านมันแล้ว
ฉันต้องเพียงแค่ส่งสตริงที่เราต้องการค้นหา
เห็นว่ามันถูกจับและฉันสามารถใช้รูปแบบได้ทุกที่หลายครั้ง
สมมุติว่าผมทำแพทเทิร์นดอทได้
วิธีการทั้งหมดที่เรามี เรามีค่อนข้างมากจริงๆ
ให้ฉันแสดงให้คุณเห็นบางส่วนที่มีประโยชน์
เราได้พบทุกสิ่งที่พบทั้งหมด
ตัวอย่างการแข่งขัน
สมมุติว่าที่นี่เป็น
และคลิกเรียกใช้
ดูนั่นสิ
ฉันมีสิ่งนี้
และนี่.
ดังนั้นฉันจึงได้รับทั้งสองกรณีนี้ในรายการ
ฉันยังสามารถทำอะไรบางอย่าง เช่น ฟูลแมตช์และฟูลแมตช์
ตรวจสอบให้แน่ใจว่าทุกอย่างตรงกันอย่างเต็มที่
ดังนั้นถ้าผมคลิกเรียกใช้ที่นี่ มาพิมพ์กัน ดูที่นี่ คลิกเรียกใช้
ฉันไม่ได้รับเพราะฉันไม่ได้รับการแข่งขันเต็มรูปแบบ
เพื่อให้แมทช์เต็มได้คืนแมตช์นั้น
ต้องเป็นสตริงที่เรากำลังค้นหา
ดังนั้นถ้าฉันคลิกเรียกใช้
ไปเลย
ฉันได้รับวัตถุที่ตรงกันแล้ว
ในตอนนี้ สมมติว่าฉันมีเครื่องหมายคำถามที่นี่แทนที่จะเป็นเครื่องหมายอัศเจรีย์หากฉันคลิกเรียกใช้
ไม่เป็นไรถ้าฉันมีเครื่องหมายอัศเจรีย์และอาจมีอย่างอื่นในภายหลัง
ฉันยังไม่ได้รับ
เรายังมีตัวเลือกอื่นที่ตรงกัน
และจับคู่อย่างที่คุณเห็น จับคู่อักขระศูนย์หรือมากกว่าที่จุดเริ่มต้นของสตริง
ถ้าผมทำสตริงตรงนี้แล้วพิมพ์ dx ออกมาดี ขอผมเปลี่ยนค่านี้ก่อน
ลองทำที่นี่ Andre ในสตริงที่เรากำลังเปรียบเทียบจริง ๆ และถ้าฉันคลิกเรียกใช้
ฉันยังคงได้รับการจับคู่วัตถุกับถ้าฉันเห็นว่าใช้การจับคู่แบบเต็ม
ซึ่งทำให้ฉันไม่ได้เพราะ เราต้องการเพียงการจับคู่แบบตรงทั้งหมดที่นี่กับการจับคู่ที่ตรงกับสตริงและจากนั้นไม่สนใจว่าจะเกิดอะไรขึ้นหลังจากนั้น
ดังนั้นสิ่งนี้จึงมีประโยชน์อย่างยิ่ง
แต่จนถึงตอนนี้ ฉันหมายถึง เราได้วิธีการสองสามวิธีที่ใช้ได้ซึ่งค่อนข้างมีประโยชน์ แต่ดูเหมือนจะไม่ได้มีประสิทธิภาพขนาดนั้น
เหตุใดทุกภาษาจึงมีนิพจน์ทั่วไป
ทำไมเราถึงสนใจจริงๆ?
ในวิดีโอหน้า เราจะสำรวจแนวคิดเรื่องรูปแบบนี้ และวิธีที่เราทำรูปแบบขั้นสูงจริงๆ
แล้วพบกันใหม่ในวิดีโอหน้าครับ
ลาก่อน.