ฉันจะรับมือกับพวกมันได้อย่างไร
เหมือนสิ่งใหม่ ๆ :
10 Study
20 Practice
30 goto 10
ศึกษา
ฉันพบว่าครูที่ประสบความสำเร็จมากที่สุดเริ่มสอนวิชาใดก็ได้โดยให้พื้นฐานเล็กน้อยกับเรื่อง สิ่งสำคัญคือต้องมีบริบทของสิ่งที่คุณกำลังเรียนรู้และที่สำคัญที่สุดคือสาเหตุที่คุณเรียนรู้
มันคือการจับคู่สตริงทั้งหมด
นิพจน์ปกติเป็นวิธีการจับคู่รูปแบบในข้อความ มันเป็นภาษาที่ประกาศตัวเองรวมอยู่ในภาษาการเขียนโปรแกรมอื่น ๆ อีกมากมาย
ผมอยากจะเน้นว่ามันเป็นภาษาที่เปิดเผยแสดงออกปกติจะมีประโยชน์สำหรับการแสดงสิ่งที่สตริงเพื่อให้ตรง แต่พวกเขาทำไม่ได้ในทางใด ๆ แสดงว่าโปรแกรมที่จะไปเกี่ยวกับการทำที่ตรงกัน ด้วยเหตุนี้จึงเป็นไปได้ที่จะใช้นิพจน์ทั่วไปอย่างรวดเร็วและช้ามากในภาษาการเขียนโปรแกรมเดียวกันโดยใช้ตัวแยกวิเคราะห์ RegEx ที่แตกต่างกัน
เหตุผลในการสร้างนิพจน์ทั่วไปนั้นเหมือนกันสำหรับการสร้างภาษาการเขียนโปรแกรมส่วนใหญ่: โปรแกรมเมอร์พบว่าตัวเองกำลังทำงานที่ซับซ้อนเหมือนเดิมซ้ำแล้วซ้ำอีกและตัดสินใจว่าพวกเขาต้องการวิธีเขียนโค้ดที่ง่ายขึ้น
บางคนจะ (และควร) บ่นเกี่ยวกับประโยคก่อนหน้าของฉันด้วยการพูดอะไรบางอย่างตามสายของ:
RegEx ไม่ทำให้โปรแกรมง่ายขึ้น
มันเป็นความจริง
RegEx ไม่ได้ทำให้โปรแกรมง่ายขึ้น RegEx ทำให้การเขียนโปรแกรมง่ายขึ้น คุณยังต้องมีความละเอียดในการทดสอบเพื่อให้แน่ใจว่าทุกกรณีที่ถูกต้องตรงกันอย่างถูกต้องและทุกกรณีไม่ถูกต้อง เป็นการยากที่จะทดสอบ "ทั้งหมด" และด้วยรูปแบบที่ซับซ้อนจึงยากที่จะทดสอบ "ส่วนใหญ่" ที่เลวร้ายที่สุดคุณควรทดสอบกรณี "บาง"
ให้รวมตัวอย่างบางส่วนที่ฉันเลือกเอนจิน RegEx ของ JavaScript เพราะฉันสามารถทดสอบมันได้ในเบราว์เซอร์ได้อย่างง่ายดายและเพราะฉันไม่ต้องใช้สายอักขระใด ๆ ในการหลบหนีขณะใช้ตัวอักษร RegEx
เมื่อคุณทำการจับคู่สตริงปกติคุณจะทดสอบค่าสตริงหนึ่งกับอีกค่า พวกเขาสามารถมาจากที่ใดก็ได้ แต่ในท้ายที่สุดมันต้องใช้สองสายเปรียบเทียบกับคนอื่น:
if ( 'foo' == 'bar' ) doSomething();
ตัวอย่างนั้นดูดเพราะมันจะไม่ทำอะไรเลย
if ( foo == 'bar' ) doSomething();
ดีกว่ามาก ตอนนี้เราไม่ทราบล่วงหน้าว่าจะมีบางสิ่งที่จะทำหรือไม่ ตอนนี้เราสามารถเริ่มยอมรับการป้อนข้อมูลของผู้ใช้:
if ( prompt( 'Say "bar" to do something.' ) == 'bar' ) doSomething();
ยอดเยี่ยมตอนนี้ผู้ใช้สามารถป้อนข้อมูลbar
และบางสิ่งจะเกิดขึ้นจนกว่าคุณจะได้รับรายงานข้อผิดพลาดจากผู้ใช้ที่บอกว่าใช้"bar"
งานไม่ได้หรือ "บาร์" ไม่ทำงานหรือพิมพ์BRA
100 ครั้งและไม่มีอะไรเกิดขึ้น
ไม่สนใจการสะกดผิดและตัวละครพิเศษ'bar' != 'BAR'
และโปรแกรมเมอร์จำเป็นต้องคิดหาวิธีทดสอบว่าตัวละครตัวไหนผิด
toLowerCase
วิธีง่ายๆในการใช้งาน มันใช้งานได้อย่างยอดเยี่ยม แต่สิ่งที่เกี่ยวกับผู้ใช้ของเราที่ใช้ภาษาอังกฤษแบบอังกฤษมากกว่าภาษาอังกฤษแบบอเมริกันเมื่อคุณจับคู่something == 'color'
? something == 'color' || somthing == 'colour'
ตอนนี้คุณจะต้องตรงกับ
เรื่องสั้นสั้น ๆ รูปแบบง่าย ๆ เปลี่ยนเป็นรหัสซ้ำ ๆ จำนวนมากอย่างรวดเร็ว
ตัวอย่างสีสามารถจับคู่กับ:
/colou?r/.test( something )
ความเข้าใจที่แน่นหนาเกี่ยวกับพื้นฐานของนิพจน์ทั่วไปสามารถลดระยะเวลาที่คุณเสียไปในการสร้างล้อใหม่
เรียนที่ไหน
ภาษาส่วนใหญ่ที่ใช้นิพจน์ทั่วไปมีทรัพยากรอย่างน้อยหนึ่งรายการสำหรับไวยากรณ์เฉพาะของการใช้นิพจน์ทั่วไปภายในภาษานั้น หนึ่งสำหรับJavaScript สามารถพบได้ใน MDN
อ่านมัน
ทั้งหมดของมัน.
จากนั้นอ่านอีกครั้ง
ใช้เวลาในการเรียนรู้คิดว่าเป็นการลงทุน: หนึ่งชั่วโมงในการเรียนรู้ RegEx ตอนนี้ประหยัดชั่วโมงในครั้งถัดไปที่คุณต้องทำการจับคู่รูปแบบสตริงและจากนั้นอีกชั่วโมงในครั้งถัดไปหลังจากนั้น
การปฏิบัติ
หลังจากอ่านทั้งหมดเกี่ยวกับ RegEx คุณอาจไม่เข้าใจส่วนใหญ่ นั่นเป็นเพราะคุณไม่ได้ทำอะไรเลย
ฉันพูดถึงสาเหตุที่ฉันเลือก JS สำหรับตัวอย่างนี้ฉันขอแนะนำให้คุณยุ่งกับเบราว์เซอร์ของคุณ มันรวดเร็วและคุณสามารถทำได้ทันทีในแถบ URL ของคุณ
JS มีวิธีที่แตกต่างและเรียบง่ายในการใช้ RegEx:
string.match( regex )
regex.exec( string )
regex.test( string )
เริ่มต้นด้วยสิ่งที่ง่ายเช่น:
javascript:'color'.match(/colou?r/);
เป็นวิธีง่ายๆในการก้าวเท้าเข้าประตู เล่นกับมันทำลายมันดูสิ่งที่ตรงกันและสิ่งที่ไม่
30
เมื่อคุณได้รับการติดในการปฏิบัติต่อไป คุณต้องอ่านเพื่อเรียนรู้เพิ่มเติม แต่คุณต้องฝึกฝนเพื่อเข้าใจสิ่งที่คุณเรียนรู้อย่างแท้จริง