RegEx คืออะไร? Wikipedia กล่าวไว้ดังนี้:

นิพจน์ปกติ, regex หรือ regexp (บางครั้งเรียกว่า นิพจน์เหตุผล) อยู่ในวิทยาการคอมพิวเตอร์เชิงทฤษฎีและแบบเป็นทางการ ทฤษฎีภาษา ลำดับของอักขระที่กำหนด รูปแบบการค้นหา โดยปกติแล้วรูปแบบนี้จะถูกใช้โดยอัลกอริธึมการค้นหาสตริงสำหรับการดำเนินการ "ค้นหา" หรือ "ค้นหาและแทนที่" บนสตริงหรือสำหรับการตรวจสอบอินพุต

เมื่อฉันเจอ RegEx เป็นครั้งแรก ฉันได้รับแจ้งว่า RegEx ไม่ใช่ชุดทักษะที่ “ต้องมี” แต่เป็นชุดทักษะที่ “ควรมี” มันมีประโยชน์และมีประสิทธิภาพมากเมื่อคุณจัดการกับสตริง ดูเหมือนว่าจะค่อนข้างถูกต้อง: บ่อยครั้งเมื่อโค้ดบรรทัดเดียวสามารถแก้ปัญหาพร้อมท์/ปัญหาได้ หากไม่มี RegEx ฉันจะต้องเขียนสอง สาม หรือหลายบรรทัดเพื่อให้บรรลุเป้าหมายเดียวกัน โปรแกรมเมอร์ที่ดีมีชื่อเสียงที่สมควรจะเป็นคนเกียจคร้านและแห้ง ฉันอยากเป็นโปรแกรมเมอร์ที่ดี ดังนั้นฉันจึงเพิ่มการเรียนรู้ RegEx ลงในรายการสิ่งที่ต้องทำและกำหนดเวลาสิ้นสุด

RegEx เป็นสิ่งที่ง่ายต่อการเรียนรู้และปฏิบัติตาม ไม่มีปัญหาสำหรับฉัน ฉันทำตามบทช่วยสอนหนึ่งที่ Fullstack แนะนำระหว่างการลงรองพื้น งานง่าย! ฉันสามารถจบบทช่วยสอนได้ภายในเวลาไม่ถึงวัน อย่างไรก็ตามไม่มีอะไรอยู่ในสมองของฉัน ฉันยังไม่รู้วิธีใช้รูปแบบที่เรียนรู้มาในการเขียนโค้ด จริงๆ แล้วมีรูปแบบมากมายใน RegEx เช่นเดียวกับทักษะใหม่อื่นๆ หากคุณไม่ใช้มัน คุณจะลืมมันไปได้ง่ายๆ ไม่มีเกมที่น่าแปลกใจและยุติธรรม! ฉันไม่สามารถบ่นอะไรเกี่ยวกับเรื่องนี้ได้

ครั้งที่สองที่ฉันเรียนรู้ RegEx คือผ่าน FreeCodeCamp FreeCodeCamp มีชื่อเสียงในด้านหลักสูตรการเขียนโค้ดที่แข็งแกร่ง ฉันยังต้องการเรียนรู้ RegEx และหวังว่าสักวันหนึ่งฉันจะเป็นหนึ่งในโปรแกรมเมอร์เจ๋งๆ ใน ​​Codewars ที่สามารถเขียนโค้ดแฟนซีบรรทัดเดียวเพื่อแก้ไขปัญหาที่ซับซ้อนได้ ฉันคิดว่าจะลองอีกครั้งเพื่อหวังว่าครั้งที่สองจะจม

ครั้งนี้ฉันกระจายการเรียนรู้ทีละนิดในแต่ละวันในขณะที่ฉันกำลังเรียนรู้ Javascript ขั้นสูง ขอย้ำอีกครั้งว่าความท้าทายเหล่านั้นเรียบง่ายและเข้าใจง่าย แต่อย่างใดพวกเขาเพียงแค่ "เข้าหูข้างหนึ่งและออกอีกข้างหนึ่ง" ในช่วงเวลานั้น ฉันได้ยินเสียงอื่นๆ: โปรแกรมเมอร์บางคนบ่นว่า RegEx ทำให้การอ่าน เขียน และบำรุงรักษาโค้ดทำได้ยาก จู่ๆ ฉันก็รู้สึกโล่งใจที่ไม่ได้รับมันแม้จะลองครั้งที่สองแล้วก็ตาม บางทีฉันอาจจะเพิกเฉยต่อ RegEx

ขณะที่ฉันกำลังเรียนรู้และฝึกฝนเกี่ยวกับการเขียนโค้ดมากขึ้น ฉันพบว่าตัวเองคิดผิดในสองเรื่องสุดโต่ง นั่นคือ การเพ้อฝันมากเกินไปหรือเพิกเฉยต่อมันโดยสิ้นเชิง วิธีที่เป็นกลางในการดู RegEx มากขึ้นคือ: เมื่อมีบางสถานการณ์ที่ RexEx มอบวิธีแก้ปัญหาที่มีประสิทธิภาพและกะทัดรัดสำหรับปัญหา (แน่นอนว่าเข้าใจได้ไม่ยาก) ให้ลงมือทำเลย! ในบางครั้ง ควรใช้ส่วนของโค้ดที่อ่านง่ายและบำรุงรักษาได้ดีกว่า

โชคดีที่มีกรอบความคิดที่เปิดกว้างนี้ ฉันพบวิธีที่มีประสิทธิภาพมากขึ้นในการเรียนรู้ RegEx: ฝึกฝน Codewars และเปรียบเทียบโซลูชันของฉันเองกับโซลูชันอื่นๆ และไม่มั่นใจเกี่ยวกับโซลูชันที่ใช้ RegEx ถ้าฉัน (ในฐานะมือใหม่ใน RegEx) พบวิธีแก้ปัญหาโดยใช้ RegEx ที่เข้าใจง่าย ก็มีโอกาสมากที่โปรแกรมเมอร์คนอื่นๆ (รุ่นน้องหรือรุ่นพี่) จะรู้สึกแบบเดียวกัน ดังนั้นจึงเป็นกรณีที่ดีสำหรับการใช้ RegEx แทนที่จะเป็นส่วนแบบละเอียด ของรหัส จากนั้น ฉันจะดูเอกสารประกอบและศึกษาการใช้งานรูปแบบเฉพาะของ RegEx ด้วยวิธีนี้สิ่งที่ฉันเรียนรู้สามารถจมลงได้ตามธรรมชาติ

TAKEAWAY ของฉันคือ:

  • รับความเข้าใจระดับสูงเกี่ยวกับ RegEx และไวยากรณ์ของมัน ไม่จำเป็นต้องเรียนรู้และทำความเข้าใจแต่ละรูปแบบโดยละเอียด (มีรูปแบบมากมายที่คุณจะหลงทางได้ง่าย)
  • ค้นหาปัญหาการเขียนโค้ดที่เกี่ยวข้องกับสตริงและทำความเข้าใจว่าผู้อื่นใช้ RegEx เพื่อแก้ไขปัญหาเหล่านั้นอย่างไร (ขณะทำเช่นนี้ ก็เป็นเวลาที่เหมาะสมสำหรับคุณที่จะเจาะลึกถึงรูปแบบเฉพาะและทำความเข้าใจวิธีใช้งานในโค้ดของคุณ)
  • โปรดสงสัยเกี่ยวกับ RegEx อีกครั้ง: ใช้เมื่อจำเป็น สำหรับฉันแล้วดูเหมือนว่าการใช้งานบ่อยที่สุดคือการล้างสตริงโดยใช้ ".replace" อย่าใช้เวลามากเกินไปในการเรียนรู้และเขียนโค้ดโดยใช้รูปแบบ/การใช้งานที่ซับซ้อนมาก มีแนวโน้มมากที่โปรแกรมเมอร์คนอื่นๆ จะไม่เห็นคุณค่าของมันเลย เพราะมันเข้าใจยากกว่าและดูแลรักษายากกว่า

ฉันหวังว่าเคล็ดลับเล็กๆ น้อยๆ เหล่านี้จะเป็นประโยชน์สำหรับคนอื่นๆ ที่กำลังวางแผนจะเรียนรู้ RegEx