ในช่วงเดือนที่ผ่านมาฉันได้ครอบคลุมแอปทางลัดและ Automator บน iOS และ macOS ตามลำดับ ทั้งสองเป็นขุมพลังเมื่อพูดถึงระบบอัตโนมัติในระบบนิเวศของ Apple และเริ่มต้นด้วย macOS Monterey ในฤดูใบไม้ร่วงนี้ ทางลัดจะเป็นแอปการทำงานอัตโนมัติสำหรับอุปกรณ์ Apple ทั้งหมด นี่คือเหตุผลที่ฉันต้องการใช้บทความนี้เพื่อพูดคุยเกี่ยวกับหัวข้อที่ทรงพลังมาก: การใช้ regex กับแอปคำสั่งลัด
แม้ว่าฉันจะมีพื้นฐานด้านวิทยาการคอมพิวเตอร์และการเขียนโปรแกรมมาก่อน แต่ฉันก็ไม่เคยเจอ regex เลย บางทีชื่ออาจทำให้ฉันกลัว หรืออาจเป็นรหัส ซึ่งเป็นรหัสที่อ่านง่ายที่สุดเท่าที่ฉันเคยเห็นมา
ไม่ว่าในกรณีใด ฉันตัดสินใจที่จะตรวจสอบ regex เพิ่มเติมหลังจากครอบคลุมแอปคำสั่งลัดในช่วงสองสามเดือนที่ผ่านมา และสิ่งที่ฉันค้นพบก็คือข้อจำกัดมากมายที่ฉันพบเจอกับคำสั่งลัด เช่นเดียวกับ Automator สามารถเอาชนะได้ด้วย regex
กล่าวอีกนัยหนึ่ง ไม่ใช่ว่าแอปเหล่านี้ขาดคุณสมบัติ แต่ฉันขาดการศึกษา
ในโพสต์ของวันนี้ คุณและฉันจะเรียนรู้เกี่ยวกับ regex อย่างละเอียด ด้วยวิธีนี้ คุณจะได้รับประโยชน์สูงสุดจากแต่ละแอปเหล่านี้
เราจะพูดถึงพื้นฐานของ regex (เริ่มจากสิ่งที่เป็น) สิ่งที่คุณสามารถทำได้ในแอปคำสั่งลัด บางเว็บไซต์และ แหล่งข้อมูลที่คุณสามารถใช้ได้หากคุณไม่ต้องการเรียนรู้ regex ด้วยตัวเอง จากนั้นเราจะพูดถึงแนวคิดหลักและกลไกของ regex ภาษา.
เอาล่ะ มาเริ่มกันเลย!
สารบัญ
-
นิพจน์ทั่วไป (เช่น regex) คืออะไร
- สิ่งที่คุณสามารถทำได้ด้วย regex
- คุณจะใช้ regex กับแอปทางลัดได้อย่างไร
- ใช้ regex101.com เพื่อทดสอบนิพจน์ทั่วไปของคุณ
- หากคุณไม่ต้องการเรียนรู้วิธีใช้ regex กับแอปคำสั่งลัด อ่านสิ่งนี้
-
Regex สำหรับผู้เริ่มต้น: เริ่มใช้ regex ด้วยทางลัด
- รส regex คืออะไร?
- เว็บไซต์และข้อมูลอ้างอิงเพื่อช่วยให้คุณเริ่มเรียนรู้ regex ด้วยคำสั่งลัด
- วิธีค้นหาข้อความพื้นฐานโดยใช้ regex พร้อมทางลัด
- การเพิ่มองค์ประกอบตัวแปรในการค้นหา regex ของคุณ
- ช่วงสามารถขยายการค้นหาของคุณได้
- วิธีแยกคำและอักขระออกจากการค้นหา regex ด้วยคำสั่งลัด
- Wildcards สามารถให้ตัวเลือกการค้นหาเพิ่มเติมแก่คุณ
- ใช้ตัวระบุเพื่อระบุความยาวของข้อความที่คุณต้องการ
- มีตัวระบุเพิ่มเติมอีกสองสามตัวที่คุณอยากรู้เกี่ยวกับ
- ค้นหาอักขระที่จุดเริ่มต้นและจุดสิ้นสุดของสตริงข้อความ
- จัดเก็บสตริงข้อความโดยใช้ฟังก์ชันการจัดกลุ่มของ regex ด้วย Shortcuts
-
ตอนนี้อะไร?
- คุณจะทำลายสิ่งนี้ได้อย่างไร?
-
เริ่มใช้ regex ด้วยคำสั่งลัดเพื่อยกระดับการทำงานอัตโนมัติของคุณไปอีกระดับ
- กระทู้ที่เกี่ยวข้อง:
นิพจน์ทั่วไป (เช่น regex) คืออะไร
นิพจน์ทั่วไปหรือ "regex" เป็นโค้ดเล็กน้อยที่คุณสามารถใช้ค้นหาข้อความภายในข้อความขนาดใหญ่ได้
ในกรณีที่คุณไม่ทราบ ข้อความในส่วนอื่นของข้อความจะเรียกว่า "สตริง" ในการเขียนโปรแกรม ตัวอย่างเช่น คำว่า 'สีเขียว' คือชุดอักขระจากข้อความ "วันนี้ฉันสวมกางเกงสีเขียว"
ในอีกทางหนึ่ง regex เป็นวิธีค้นหาสตริงข้อความในเนื้อหาที่ใหญ่ขึ้น และเนื่องจาก regex เขียนด้วยโค้ด คุณจึงสามารถใช้เพื่อดำเนินการบางอย่างที่ซับซ้อนได้
ตัวอย่างเช่น หากคุณต้องการค้นหาคำว่า "อีเมล" คุณสามารถเขียนโค้ด regex ที่ค้นหาอีเมลได้อย่างง่ายดาย
หากคุณต้องการค้นหาอีเมลที่อยู่ภายในย่อหน้า และไม่ทราบว่าอีเมลนั้นคืออะไร คุณจะต้องค้นหาสตริงข้อความที่มีรูปแบบเหมือนอีเมล นั่นคือสตริงที่ตามหลัง “[ป้องกันอีเมล]" รูปแบบ.
ตอนนี้ สมมติว่าคุณไม่เพียงต้องการค้นหาอีเมลหนึ่งฉบับจากย่อหน้าแต่ ทั้งหมด อีเมล. บางทีคุณอาจต้องการคัดลอกไปที่อื่นอย่างรวดเร็ว อัปเดตเป็นรูปแบบใหม่ หรือแทนที่เพื่อให้ทุกคนพูดว่า "[ป้องกันอีเมล]“.
เมื่อคุณเชี่ยวชาญและมีประสบการณ์กับ regex มากขึ้น คุณจะสามารถทำสิ่งทั้งหมดนี้และอื่นๆ อีกมากมาย
สิ่งที่คุณสามารถทำได้ด้วย regex
เอาล่ะ ตัวอย่างอีเมลที่ฉันเพิ่งให้ไปอาจใช้ไม่ได้จริง ไม่ต้องกังวล เพราะนั่นยังห่างไกลจากขีดจำกัดของสิ่งที่คุณทำได้โดยใช้ regex กับแอปคำสั่งลัด
โดยทั่วไป ทุกสิ่งที่ regex สามารถทำได้จะจัดเป็นประเภทใดประเภทหนึ่งจากสี่ประเภทต่อไปนี้
- ค้นหาสตริงข้อความในข้อความที่ใหญ่ขึ้น (เช่น ค้นหาคำ/สตริง/ประเภทของสตริงในหน้าข้อความ)
- ตรวจสอบว่าสตริงข้อความตรงกับรูปแบบที่คุณต้องการ (เช่น ตรวจสอบว่าสตริงข้อความเป็นตัวพิมพ์ใหญ่/เรียงลำดับ/คั่นอย่างถูกต้อง)
- แทนที่หรือแทรกข้อความในพื้นที่เฉพาะของข้อความ
- แยกสตริงข้อความตามจุดที่ระบุ (เช่น แบ่งข้อความทุกครั้งที่มีเครื่องหมายจุลภาค)
ระดับความลึกที่คุณสามารถใช้เพื่อโต้ตอบกับฟังก์ชันแต่ละประเภทเหล่านี้และวิธีที่คุณสามารถรวมเข้าด้วยกันทำให้ regex เป็นเครื่องมือที่ทรงพลังอย่างเหลือเชื่อสำหรับการแยกวิเคราะห์และจัดการข้อความ
คุณจะใช้ regex กับแอปทางลัดได้อย่างไร
เอาล่ะ ตอนนี้คุณคงพอมีแนวคิดพื้นฐานแล้วว่า regex ใช้สำหรับทำอะไร เป็นโค้ดประเภทหนึ่งที่คุณสามารถใช้ค้นหาข้อความ แม้ว่าคุณจะไม่ทราบแน่ชัดว่าข้อความนั้นคืออะไร
วิธีนี้จะช่วยคุณในคำสั่งลัดได้อย่างไร คล้ายกับการเพิ่มสคริปต์ลงในคำสั่งลัดของคุณ ซึ่งเป็นวิธีการเปลี่ยนจากการทำงานอัตโนมัติขั้นพื้นฐาน (ส่งข้อความหาฉันเมื่อประตูหน้าเปิด) ไปจนถึงตัวเลือกขั้นสูงเพิ่มเติม (สร้างกิจกรรมในปฏิทินสำหรับการประชุมของฉันโดยอัตโนมัติทุกครั้งที่ได้รับอีเมลสำหรับการประชุม Zoom จากที่ทำงาน).
คุณสามารถใช้ regex กับคำสั่งลัดเพื่อตรวจสอบว่าอินพุตถูกต้องหรือไม่ ตัวอย่างเช่น หากคุณสร้างทางลัดที่ใช้งานได้กับ URL เท่านั้น คุณสามารถใช้ regex ที่จุดเริ่มต้นของคำสั่งลัด เพื่อให้แน่ใจว่าผู้ใช้กำลังเรียกใช้การทำงานอัตโนมัติบน URL
คุณสามารถรวม regex กับการเขียนสคริปต์เพื่อสร้างคำสั่งลัดที่มีประสิทธิภาพ ตัวอย่างเช่น, ทางลัดนี้ ใช้ regex และการเขียนสคริปต์เพื่อเปลี่ยนบาร์โค้ดเป็น URL สำหรับร้านค้าที่คุณชื่นชอบ
เมื่อใช้แอปคำสั่งลัดบน Mac (ฤดูใบไม้ร่วงปี 2021) คุณสามารถใช้ regex เพื่อดำเนินการกับชุดข้อความได้ ตัวอย่างเช่น คุณสามารถคัดลอกอีเมลทั้งหมดในรายการข้อความที่เลือกได้ หรือคุณสามารถแทนที่ชื่อทั้งหมดในเอกสารด้วยอักขระ “*” เพื่อความเป็นส่วนตัว
คุณยังสามารถคัดลอกเนื้อหาจากแอพหนึ่ง ฟอร์แมตใหม่เพื่อให้ตรงกับการตั้งค่าของแอพอื่น แล้ววางลงในแอพอื่นนั้น ทั้งหมดนี้ทำได้ด้วยการคลิกขวาเพียงครั้งเดียว
กล่าวอีกนัยหนึ่ง regex ช่วยให้คุณควบคุมการจัดการข้อความด้วยแอปคำสั่งลัดได้อย่างเต็มที่ นั่นอาจฟังดูไม่มีประโยชน์นักในตอนแรก แต่ตอนนี้เมื่อคุณรู้ว่ามันมีอยู่จริง คุณจะเริ่มสังเกตเห็นว่าฟีเจอร์นี้สามารถปรับปรุงคำสั่งลัดได้จำนวนเท่าใด และคุณจะสังเกตด้วยว่าคำสั่งลัดจำนวนมากไม่สามารถทำได้หากไม่มี regex
ใช้ regex101.com เพื่อทดสอบนิพจน์ทั่วไปของคุณ
เมื่อคุณเริ่มใช้ regex กับคำสั่งลัด คุณจะหงุดหงิดใจ:
การทดสอบโค้ด regex ของคุณเป็นเรื่องยากมาก และนั่นไม่ใช่เฉพาะ regex การทดสอบทุกอย่างด้วยแอพคำสั่งลัดนั้นค่อนข้างลำบาก วิธีเดียวที่จะทำเช่นนั้นได้คือการเรียกใช้ทางลัด วิธีการนั้นไม่เลวเมื่อคุณเพียงแค่ทดสอบคุณสมบัติทางลัดในตัว
แต่สำหรับการทดสอบโค้ด วิธีนี้ไม่อนุญาตให้ตรวจสอบทีละบรรทัดและไม่มีข้อเสนอแนะมากนัก
เพื่อการนั้น ฉันขอแนะนำให้ใช้ regex101.com เป็นไซต์ที่คุณสามารถพิมพ์โค้ด regex ลงในแบบเรียลไทม์ คุณยังสามารถพิมพ์ข้อความลงในโปรแกรมแก้ไขข้อความบนหน้าเว็บเดียวกันได้ ขณะที่คุณพิมพ์แต่ละรายการ คุณจะเห็นว่า regex ของคุณใช้งานได้ เหตุใดจึงทำงานหรือไม่ทำงาน และรับข้อมูลเกี่ยวกับรายการที่ตรงกัน
regex101.com ใช้ regex รสชาติที่แตกต่างจากที่คำสั่งลัดรองรับ (เพิ่มเติมในหนึ่งนาที) แต่ก็ใกล้เคียงพอที่คุณจะไม่พบปัญหามากเกินไป
การใช้เครื่องมือนี้ดีมากเพราะคุณสามารถเขียน regex ของคุณที่นั่นก่อน แล้วจึงคัดลอกไปยังแอปคำสั่งลัดเมื่อทำงานตามที่ตั้งใจไว้
หากคุณไม่ต้องการเรียนรู้วิธีใช้ regex กับแอปคำสั่งลัด อ่านสิ่งนี้
ฉันเข้าใจแล้ว ไม่ใช่ทุกคนที่ต้องการเรียนรู้วิธีใช้ regex กับคำสั่งลัด เป็นทักษะและนั่นหมายความว่าต้องใช้เวลาและการฝึกฝน ไม่มีที่ไหนที่ใกล้จะง่ายเท่ากับคุณสมบัติการลากแล้ววางที่เหลือของแอพคำสั่งลัด
ไม่ต้องห่วง! แม้ว่าคุณจะไม่สามารถใช้งานแอปคำสั่งลัดได้มากเท่ากับผู้ที่ใช้เวลาในการเรียนรู้ regex แต่ก็ยังมีตัวเลือกให้คุณ กล่าวคือ มีไซต์และหน้าเว็บออนไลน์ที่ผู้คนได้สร้างรายการโค้ดกัด regex ที่คุณสามารถคัดลอกและวางลงในแอปคำสั่งลัดได้
นี่คือลิงก์บางส่วนสำหรับคุณที่จะตรวจสอบว่าคุณไม่ต้องการเรียนรู้ regex หรือไม่:
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet
- https://www.reddit.com/r/shortcuts/comments/9zo24n/regex_cookbook_for_shortcuts_reusable_regex_to/
- https://www.reddit.com/r/shortcuts/comments/b5labq/match_text_examples_for_the_beginner_a_regex/
- http://www.rexegg.com/regex-cookbook.html
เพียงอ่านลิงก์เหล่านั้นและคุณควรจะสามารถค้นหาโซลูชัน regex ทั่วไปสำหรับทางลัดที่คุณต้องการสร้างได้ นี่ไม่ใช่ตัวเลือกที่ไม่ต้องให้การศึกษา เนื่องจากยังต้องใช้เวลาอีกสักหน่อยกว่าจะเข้าใจสิ่งที่คุณกำลังดูอยู่ แต่มันง่ายกว่ามากและเป็นทางออกที่ดีสำหรับคนที่ไม่มีเวลาใส่ regex
ที่กล่าวว่าฉันต้องยอมรับว่า regex ไม่ยากเกินไปที่จะเรียนรู้ โดยเฉพาะอย่างยิ่งหากคุณมีประสบการณ์กับเชลล์โค้ดหรือการเขียนโปรแกรมสำหรับผู้เริ่มต้นใช้งาน Regex ฟังดูไร้สาระในตอนแรก แต่หลังจากอ่านบทความและเล่นกับ regex101.com เป็นเวลาหนึ่งชั่วโมง ฉันก็เริ่มเขียน regex สำหรับคำสั่งลัดได้
มันเป็นแค่ความคุ้นเคย – หลังจากที่คุณดูมันนานพอแล้ว มันจะไม่ดูแปลกไปกว่านี้อีกแล้ว ดังนั้นถ้าคุณมีเวลาและแค่กลัว อย่าเป็น!
Regex สำหรับผู้เริ่มต้น: เริ่มใช้ regex ด้วยทางลัด
เอาล่ะ คำนำพอ! คุณควรมีความคิดว่า regex คืออะไร สามารถทำอะไรได้บ้าง เหตุใดคุณจึงควรเรียนรู้ และข้อมูลเพียงพอที่จะตัดสินใจว่าคุณต้องการเรียนรู้หรือไม่ ตอนนี้เรากำลังจะเข้าสู่ประเด็นสำคัญ
มีเนื้อหามากมายด้านล่าง แต่ไม่ต้องกังวล! บทความนี้จะเป็นแนวทางศึกษาเพิ่มเติม ฉันแนะนำให้อ่านทีละส่วนเพื่อให้คุณเข้าใจกลไกที่ regex ใช้ สิ่งนี้ควรช่วยให้คุณคาดไม่ถึงเช่นกัน หากคุณยังสับสนว่า regex คืออะไร
เมื่อคุณอ่านข้อมูลคร่าวๆแล้ว ฉันแนะนำให้เปิด regex101.com และเล่นกับเครื่องมือแต่ละอย่างในแต่ละส่วนด้านล่าง ที่จะช่วยให้คุณเห็นว่าแนวคิดในทางปฏิบัติเป็นอย่างไร และปรับปรุงความจำของคุณ หลังจากที่คุณทำเสร็จแล้ว คุณสามารถถือว่าบทความนี้เป็นจุดอ้างอิง ซึ่งเป็นสิ่งที่คุณสามารถกลับมาทำได้เมื่อคุณลืมบิตและบ็อบของ regex
ตกลงให้เป็นไป!
รส regex คืออะไร?
อันดับแรก เราจะดูรสชาติของ regex ไม่ต้องกังวล การดำเนินการนี้จะไม่ส่งผลต่อการใช้ regex แบบวันต่อวันด้วยคำสั่งลัด เป็นเพียงสิ่งที่ควรทราบก่อนเริ่มใช้งาน
มี regex หลายเวอร์ชันที่เรียกว่า "flavors" เวอร์ชันต่างๆ เหล่านี้ยังคงมีความคล้ายคลึงกันมาก หากคุณสามารถเรียนรู้ที่จะอ่านและเขียนรสหนึ่งได้ คุณก็ควรจะอ่านรสใดก็ได้ จะมีความแตกต่างเล็กน้อยในการจัดรูปแบบโค้ด regex ของคุณ
ในการเขียนโปรแกรม ลักษณะเฉพาะของการจัดรูปแบบเหล่านี้เรียกว่า “ไวยากรณ์” เป็นเพียงวิธีที่คุณต้องเขียนโค้ดเพื่อให้แอปที่คุณกำลังเขียนโค้ดเข้าใจโค้ดนั้น
นี่คือเหตุผลที่ไวยากรณ์มีความสำคัญ
“เฮ้เพื่อน วันนี้เป็นอย่างไรบ้าง”
“จะไปเพื่อน? สวัสดีวันของคุณอย่างไร”
ทั้งสองประโยคมีคำ อักขระ และช่องว่างเหมือนกัน มีเพียงสิ่งเดียวเท่านั้นที่สมเหตุสมผล และนั่นเป็นเพราะมันเป็นไปตามรูปแบบทั่วไป
ในการเขียนโปรแกรม ภาษาโปรแกรมหนึ่งอาจเข้าใจเวอร์ชันแรกแต่ไม่เข้าใจเวอร์ชันที่สอง สำหรับภาษาโปรแกรมอื่น ภาษาที่สองอาจสมเหตุสมผลทั้งหมดในขณะที่ภาษาแรกดูเหมือนพูดพล่อยๆ สำหรับคนที่พูดภาษาอังกฤษได้ คุณอาจจะเข้าใจเจตนาของทั้งสองประโยคได้ แม้ว่าจะต้องใช้เวลาสักหน่อยกว่าจะเข้าใจความหมาย
นั่นคือ (ประมาณ) รสชาติของ regex ที่แตกต่างกันเป็นอย่างไร พวกเขาทั้งหมดจะดูแตกต่างออกไปเล็กน้อยและคล้ายกับคุณเล็กน้อย แต่คุณต้องใช้รสชาติที่เหมาะสมกับแอปที่คุณใช้อยู่ ไม่เช่นนั้นแอปนั้นจะไม่รู้ว่าคุณเขียนอะไร
แอปคำสั่งลัดเข้าใจรสชาติของ ICU ของ regex นั่นคือรสชาติที่คุณต้องการใช้ ไซต์ regex101.com มีรสชาติที่แตกต่างกันสองสามแบบที่คุณสามารถเลือกได้ทางด้านซ้ายของหน้า มันใช้ PCRE ซึ่งค่อนข้างคล้ายกับ ICU
สิ่งสำคัญคือต้องรู้ว่ามี regex หลายรสชาติ เพราะคุณจะเจอรสชาติต่างๆ ทางออนไลน์อย่างไม่ต้องสงสัย หากคุณพบ regex เล็กน้อยที่คุณต้องการขโมยแต่ใช้งานกับคำสั่งลัดไม่ได้ หรือดูไม่ถูกต้อง ให้ตรวจดูว่ามันถูกเขียนไว้รสอะไร!
เว็บไซต์และข้อมูลอ้างอิงเพื่อช่วยให้คุณเริ่มเรียนรู้ regex ด้วยคำสั่งลัด
อีกสิ่งหนึ่งที่ฉันต้องการกล่าวถึงก่อนที่เราจะเริ่มสำรวจกลไกที่แท้จริงของการเขียน regex คือแหล่งข้อมูล ฉันไม่ได้อ้างว่าโพสต์นี้เป็นแหล่งข้อมูลที่ครบถ้วนสมบูรณ์ในการเรียนรู้ regex เป็นเพียงจุดเริ่มต้นที่เป็นประโยชน์สำหรับผู้ที่ต้องการใช้ regex กับคำสั่งลัด
หากคุณต้องการเจาะลึกใน regex หรือรู้สึกว่าบทความนี้ไม่ได้ให้ความช่วยเหลือที่คุณต้องการ คุณสามารถดูบทความ คำแนะนำ และเครื่องมือเหล่านี้ได้:
- https://regex101.com – เว็บไซต์ที่ให้คุณทดสอบรหัส regex ของคุณแบบเรียลไทม์
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – แผ่นโกงเมื่อคุณลืมสิ่งที่ตัวละครแต่ละตัวทำ
- http://www.rexegg.com – เว็บไซต์นี้เป็นแหล่งข้อมูลที่ครอบคลุมเกี่ยวกับการเรียนรู้ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ regex ลองดูอันนี้ถ้าคุณต้องการที่จะเชี่ยวชาญกับ regex
- https://scottwillsey.com/blog/ios/regex1/ – นี่คือชุดบล็อกสี่ตอนเกี่ยวกับการใช้ regex กับทางลัด ฉันกำลังใช้แนวทางที่ต่างไปจากคู่มือนี้มาก ดังนั้นจึงควรสร้างซีรีส์คู่หูที่ดีให้กับบทความนี้
- Stack Overflow และ Reddit เป็นเว็บไซต์ที่ดีในการแชร์คำถามเกี่ยวกับ regex และความคืบหน้าเพื่อรับคำแนะนำและคำตอบ
ทรัพยากรเหล่านี้แตกต่างจากที่ระบุไว้ใน หากคุณไม่ต้องการเรียนรู้วิธีใช้ regex กับแอปคำสั่งลัด เนื่องจากคุณจะต้องเริ่มเรียนรู้ regex จริงๆ มีความครอบคลุมมากขึ้น ในขณะที่ส่วนอื่นๆ เป็นเพียงจุดอ้างอิง
วิธีค้นหาข้อความพื้นฐานโดยใช้ regex พร้อมทางลัด
ไม่เป็นอะไร! ตอนนี้เรามาถึงจุดที่ทุกคนรอคอยแล้ว เราจะมาเรียนรู้พื้นฐานของการใช้ regex กับคำสั่งลัด
เริ่มจากการค้นหาพื้นฐานกันก่อน เพราะนี่เป็นสิ่งที่ง่ายที่สุดที่คุณสามารถทำได้ด้วย regex ดังที่ได้กล่าวไว้ก่อนหน้านี้ ฉันแนะนำให้เปิด regex101.com ในแท็บอื่นเพื่อให้คุณสามารถปฏิบัติตามได้
อย่างพื้นฐานที่สุด regex จะค้นหา (หรือ จับคู่) สิ่งที่คุณพิมพ์ลงไป เช่น ถ้าฉันต้องพิมพ์ ไม่เป็นอะไร
เป็นโค้ด regex ของฉัน จะพบทุก ๆ อินสแตนซ์ของคำว่า "Alright" ในคู่มือนี้
กรณี การเว้นวรรค และเครื่องหมายวรรคตอน แปลว่า ไม่เป็นอะไร
, ใช้ได้
, ไม่เป็นอะไร!
, และ ไม่เป็นอะไร ,
ล้วนสร้างผลลัพธ์ที่แตกต่างกัน
และนั่นแหล่ะ! เมื่อใดก็ตามที่คุณพิมพ์บางอย่างลงในการค้นหา regex โดยไม่ต้องใช้อักขระพิเศษใดๆ regex จะจับคู่ทุกอย่างที่ตรงกับสิ่งที่คุณพิมพ์ทุกประการ
มีหนึ่งจับ! อักขระบางตัวบนแป้นพิมพ์ของคุณยังเป็นอักขระ regex พิเศษอีกด้วย นั่นหมายความว่าพวกเขาทำหน้าที่บางอย่างในโค้ด regex
NS ?
สัญลักษณ์เป็นหนึ่งในอักขระดังกล่าว ใช้ในโค้ด regex เป็นตัวระบุ ดังนั้น หากคุณลองค้นหาคำว่า “ตกลง” โดยการพิมพ์ ไม่เป็นอะไร?
เป็นรหัส regex ของคุณ คุณจะไม่ได้สิ่งที่ต้องการ
ในการแก้ไขปัญหานี้ คุณต้องระบุว่าต้องการใช้ “?” เป็นสตริง ไม่ใช่เป็นอักขระพิเศษ ในการทำเช่นนั้นสำหรับอักขระนี้หรืออื่นๆ เพียงเพิ่ม a \
สัญลักษณ์ก่อนอักขระที่มีคุณสมบัติพิเศษที่คุณต้องการทำให้เป็นโมฆะ
ดังนั้นหากคุณต้องการค้นหาคำว่า “Alright?” ด้วย regex รหัสของคุณจะมีลักษณะดังนี้:
ไม่เป็นอะไร\?
หากคุณไม่แน่ใจว่าอักขระใดถือเป็นอักขระพิเศษโดย regex หรือไม่ คุณสามารถตรวจสอบ แผ่นโกงนี้ สำหรับอักขระพิเศษทั้งหมดใน regex
ค้นหามากกว่าหนึ่งคำโดยใช้อักขระ “หรือ”
องค์ประกอบที่สำคัญอีกประการของการค้นหาสตริงด้วย regex คือการใช้ฟังก์ชัน "or" นี่คืออักขระที่คุณสามารถวางไว้ระหว่างคำ/อักขระสองคำเพื่อพูดว่า "จับคู่สิ่งนี้หรือสิ่งนี้"
ตัวอย่างเช่น หากฉันต้องการค้นหาเนื้อหาของข้อความสำหรับคำว่า "ไม่เป็นไร" และ "ตกลง" ฉันจะใช้ |
อักขระ. ชอบดังนั้น:
เอาล่ะ|เอาล่ะ
หากคุณประสบปัญหาในการหา |
ตัวอักษรถือ กะ คีย์ลงแล้วกด \
กุญแจ. มันอยู่เหนือ กลับ คีย์บนแป้นพิมพ์ส่วนใหญ่
การเพิ่มองค์ประกอบตัวแปรในการค้นหา regex ของคุณ
เอาล่ะ เมื่อคุณรู้แล้วว่า regex เป็นกลางเป็นอย่างไร ก็ถึงเวลาเลือกอักขระพิเศษตัวแรกของคุณ นั้นก็จะเป็นวงเล็บเหลี่ยม ซึ่งก็คือสิ่งเหล่านี้ []
.
สิ่งที่คุณใส่ในวงเล็บเหล่านี้จะถือเป็นองค์ประกอบตัวแปรของการค้นหา regex ของคุณ คุณสามารถใส่อักขระในวงเล็บได้มากเท่าที่ต้องการ แม้ว่าจะมีเพียงอักขระเดียวที่ถูกต้องต่อการจับคู่
เอาล่ะ ฟังดูซับซ้อนไปหน่อย แต่ก็ไม่นะ! นี่คือสิ่งที่ดูเหมือนในทางปฏิบัติ:
-
[ไม่เป็นอะไร
จะตรงกับคำว่า "เอาล่ะ" ไร้สาระ -
[AB]ไม่เป็นไร
จะจับคู่ทั้ง "Alright" และ "Blright" -
Alr[iouxyz]ght
จะจับคู่กับ "Alright", "Alroght", "Alrught", "Alrxght" เป็นต้น
คุณสามารถรวมอักขระภายในวงเล็บหรือใช้วงเล็บหลายตัวในบรรทัดเดียวกันของ regex [AB]r[i1]gh[tuvwxyz]
เป็น regex ที่ถูกต้อง หวังว่ามันจะดูไม่วุ่นวายเหมือนเมื่อไม่กี่นาทีก่อน!
ช่วงสามารถขยายการค้นหาของคุณได้
regex บิตถัดไปที่จะเป็นประโยชน์กับคำสั่งลัดคือช่วง ช่วงช่วยให้คุณระบุช่วงของอักขระที่คุณจะยอมรับได้
ในส่วนที่แล้ว คุณอาจสังเกตเห็นว่าวงเล็บปีกกาของฉันมีตัวอักษรต่อเนื่องกันหลายตัว ยาวที่สุดคือ [tuvwxyz]
. ตัวอักษรเหล่านั้นจะปรากฏในลำดับเดียวกันโดยเรียงติดกัน
นั่นหมายความว่าฉันสามารถใช้ช่วงแทนการพิมพ์ได้ ที่จะมีลักษณะเช่นนี้:
ได้เลย[t-z]
รหัส regex ชิ้นนี้จะทำสิ่งเดียวกับ ได้เลย[tuvwxyz]
. มันง่ายกว่าและเขียนง่ายกว่า
คุณสามารถแทนที่ช่วงเดียวกันนั้นด้วย [a-z]
ถ้าคุณต้องการให้ยอมรับอักษรตัวพิมพ์เล็กจากตัวอักษร หรือจะใช้ [0-9]
หากคุณต้องการรับตัวเลขหลักเดียว
คุณยังสามารถรวมช่วงต่างๆ ภายในวงเล็บเหลี่ยมเดียวกันได้ ตัวอย่างเช่นสิ่งนี้ Alr[i-ux-z]ght
จะยอมรับ "Alright", "Alroght", "Alrxght" และ "Alryght" แต่จะไม่ยอมรับ "Alraght" หรือ "Alrvght"
มีรูปแบบอื่นๆ ของคำว่า "เอาล่ะ" ที่โค้ดนี้จะยอมรับ และอีกมากที่โค้ดนี้ไม่ยอมรับ นั่นเป็นเพียงการเลือกสั้น ๆ เพื่อให้สิ่งต่าง ๆ สั้น
ถ้าคุณเข้าใจอะไรยาก [i-ux-z]
หมายความว่า มันอาจช่วยให้เห็นว่ามันเขียนแบบนี้:
[i-u, x-z]
นั่นไม่ใช่ไวยากรณ์ regex ที่ถูกต้อง คุณไม่ควรใช้เครื่องหมายจุลภาคเพื่อแยกช่วง แต่หวังว่าจะช่วยให้เข้าใจได้ง่ายขึ้น!
คุณไม่จำเป็นต้องใส่เครื่องหมายจุลภาคใน regex เพื่อแยกช่วง และไม่ต้องใส่ช่วงที่อยู่ติดกัน เปลี่ยนเป็น [i-uabcx-z]
. ค่านี้จะยอมรับช่วงเดียวกันกับก่อนหน้านี้ บวกกับอักขระ "a", "b" และ "c"
วิธีแยกคำและอักขระออกจากการค้นหา regex ด้วยคำสั่งลัด
ตกลง ตอนนี้เรากำลังไปถึงที่ใดที่หนึ่งแล้ว! หากคุณได้ติดตามบทความนี้มาจนถึงจุดนี้ คุณควรสามารถดูโค้ดด้านล่างและทำความเข้าใจว่าตรงกับโค้ดใด:
Ap[pr]le[Tt]ool[BbLF]ox
หากคุณสามารถอ่านได้ แสดงว่าคุณรู้ว่าโค้ด regex นั้นมี มาก ของรูปแบบที่เป็นไปได้ของคำว่า “AppleToolBox” แล้วถ้าเราต้องการลดจำนวนรูปแบบที่ยอมรับโดยไม่เปลี่ยนช่วงของเราล่ะ
นั่นคือสิ่งที่ตัวละคร "ไม่" เข้ามา ดูเหมือนว่านี้: ^
. หากคุณมีปัญหาในการค้นหามันบนแป้นพิมพ์ของคุณ (เหมือนที่ฉันทำ) ให้กด กะ แล้วกด 6 คีย์บนแป้นพิมพ์ของคุณ
การใช้ ^
อักขระ วางไว้ที่จุดเริ่มต้นของอักขระที่คุณต้องการยกเว้น
มีการจับ! NS ^
อักขระไม่ทำงานนอกฟังก์ชัน regex คุณไม่สามารถวางไว้ข้างหน้าตัวอักษร "A" เพื่อแยกจดหมายนั้นออกจากการค้นหาของคุณ รหัส regex ^อา
จะค้นหาเมืองหลวง "A"
ให้รวมเข้ากับวงเล็บและอักขระพิเศษ regex อื่นๆ แทน
เช่น ถ้าผมต้องการค้นหาคำใด ๆ ของคำว่า "เอาล่ะ" ที่ไม่ได้ขึ้นต้นด้วยตัวอักษร "A" ฉันจะใช้รหัส [^A]ก็ได้
.
คุณยังสามารถรวมเข้ากับช่วงได้อีกด้วย! เพียงวางไว้ที่จุดเริ่มต้นของวงเล็บเหลี่ยม และสิ่งใดก็ตามที่อยู่ในวงเล็บนั้น รวมช่วง จะไม่รวมอยู่ในการค้นหาของคุณ ชอบดังนั้น:
จะทำอย่างไรถ้าคุณต้องการแยกคำบางคำออกจากการค้นหาของคุณ
ฉันมีช่วงเวลาที่ยากลำบากในการหาข้อมูลนี้ ผู้ใช้ Stack Overflow มีวิธีแก้ปัญหาและดูเหมือนว่านี้:
^(?!(คำ)$).+$
แค่เปลี่ยน คำ
ด้วยคำใดก็ตามที่คุณต้องการแยกออกจากการค้นหาของคุณ ชอบดังนั้น:
คุณสามารถอ่านโพสต์ Stack Overflow ได้ ที่นี่ หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับกรณีการใช้งานเฉพาะนี้
Wildcards สามารถให้ตัวเลือกการค้นหาเพิ่มเติมแก่คุณ
นั่นนำเราไปสู่สัญลักษณ์แทน อักขระตัวแทนซึ่งเป็นจุด .
, ใช้เพื่อแสดงอักขระตัวเดียว, ไม่มีแถบ หากคุณเพียงแค่พิมพ์ .
เป็นรหัส regex ของคุณด้วยทางลัด มันจะส่งคืนอักขระทุกตัวในเนื้อความของข้อความเป็นการจับคู่แต่ละรายการ
ฉันไม่แนะนำให้ใช้เพื่อจุดประสงค์นั้นแน่นอน! ฉันขอแนะนำให้ใช้แทนอักขระตัวเดียวในคำแทน ตัวอย่างเช่น, Alr.ght
จะตรงกับ “Alright”, “Alrxght”, “Alr
และนั่นก็ค่อนข้างมาก! อักขระตัวแทนนั้นค่อนข้างเข้าใจง่าย เข้าได้กับทุกสิ่ง! ซึ่งจะทำให้เป็นประโยชน์ในการค้นหาสตริงที่ตรงกับรูปแบบเฉพาะในขณะที่มีอักขระที่ไม่ซ้ำกัน
ตัวอย่างเช่น อีเมลทั้งหมดจะดูคล้ายกันโดยที่ไม่เหมือนเดิม สัญลักษณ์แทนสามารถช่วยคุณรวมองค์ประกอบที่คุณรู้ว่าจะอยู่ที่นั่น (เช่น “.com” และ “@”) กับอักขระที่คุณไม่รู้จัก (เช่น “my_email567”, iCloud หรือ “Gmail”)
กรณีการใช้งานที่น่าสนใจอีกกรณีหนึ่งคือการใช้ the .
อักขระเพื่อค้นหาสตริงที่มีความยาวเฉพาะ
ตัวอย่างเช่น ถ้าฉันต้องการค้นหาทุกสตริงที่มีอักขระสี่ตัวในเนื้อหาของข้อความ ฉันสามารถใช้ ...
ด้วยช่องว่างด้านใดด้านหนึ่ง
และนี่คือสตริงอักขระเจ็ดตัวทั้งหมดในเนื้อหาข้อความเดียวกัน:
โปรดทราบว่านี่ไม่ใช่วิธีที่สมบูรณ์แบบในการค้นหาสตริงที่มีความยาวตามที่กำหนด ดังที่คุณเห็นในตัวอย่างข้างต้น สตริงบางสตริงไม่ควรตรงกัน และบางสตริงควรถูกละเว้น เป็นเรื่องที่น่าสนใจที่จะจำไว้ว่าคุณสามารถใช้ปุ่ม .
ตัวอักษรที่จะนับตัวอักษร
นอกจากนี้ พึงระลึกไว้ว่า .
เป็นอักขระพิเศษใน regex นั่นหมายความว่าคุณจะต้องเพิ่ม a \
ข้างหน้าหากคุณต้องการค้นหาช่วงเวลา นั่นหมายความว่าคุณจะต้องใช้ ไม่เป็นอะไร\.
เพื่อให้ตรงกับ "เอาล่ะ"
ใช้ตัวระบุเพื่อระบุความยาวของข้อความที่คุณต้องการ
เอาล่ะ คุณสามารถใช้เทคนิค .
เพื่อค้นหาสตริงที่ใช้อักขระตามจำนวนที่ระบุ ส่วนใหญ่แล้ว คุณจะต้องการเฉพาะเจาะจงมากขึ้น
นั่นคือที่มาของปริมาณ Quantifiers ให้คุณระบุความยาวของสตริงที่คุณต้องการเมื่อใช้ regex กับคำสั่งลัด
ตัวอย่างเช่น สมมติว่าคุณต้องการค้นหาคำใดๆ ที่มีความยาวสามตัวอักษรโดยเฉพาะ ในการระบุว่า คุณจะต้องใช้วงเล็บเหล่านี้:
{}
เมื่อคุณวางวงเล็บเหล่านี้หลังจากเหล่านี้ []
วงเล็บ คุณกำลังระบุว่าคุณต้องการสตริงที่ตรงกับจำนวนอักขระภายในนี้ {}
และช่วงของอักขระที่ระบุในนี้ []
.
ฉันแน่ใจว่ามันไม่สมเหตุสมผลในตอนนี้ มาดูตัวอย่างกัน!
สมมติว่าคุณต้องการค้นหาปีที่กล่าวถึงในเนื้อความ เนื่องจากปีประกอบด้วยตัวเลขสี่ตัว (ไม่ใช่ทุกปีแน่นอน ติดตามได้ที่นี่) คุณสามารถใช้รหัสนี้เพื่อจับคู่ปีในข้อความนั้น:
[0-9]{4}
รหัสนี้บอกว่าเราต้องการสตริงที่ประกอบด้วยอักขระตั้งแต่ 0 ถึง 9 ที่มีความยาวเฉพาะสี่อักขระ คุณสามารถดูตำแหน่งของสตริงเฉพาะนี้ได้ในภาพหน้าจอต่อไปนี้:
ฉันควรทราบว่ามีปัญหาบางอย่างกับรหัส regex นี้ และนั่นไม่ได้คำนึงถึงการเว้นวรรคหรือเครื่องหมายวรรคตอน ดังนั้น หากโค้ดพบตัวเลขที่มีความยาวมากกว่าสี่อักขระ เช่น "12345678" จะพบสตริง "1234" และสตริง "5678"
ในการแก้ไขปัญหานี้ คุณจะต้องเพิ่มช่องว่างที่จุดเริ่มต้นของโค้ดและวงเล็บหลัง {4}
ที่มีการเว้นวรรค มหัพภาค เครื่องหมายคำถาม จุลภาค และเครื่องหมายอัศเจรีย์ ด้วยวิธีนี้ จะมองข้ามสตริงตัวเลขที่ยาวโดยไม่พลาดสตริงของตัวเลขที่มีเครื่องหมายวรรคตอนท้ายแทนที่จะเป็นช่องว่าง
คุณยังอาจต้องการใช้ตัวระบุปริมาณเพื่อระบุความยาวของสตริงมากกว่าหนึ่งค่า ตัวอย่างเช่น ฉันต้องการค้นหาสตริงที่มีความยาวสี่อักขระ แต่ยังรวมถึงเจ็ดและสิบเอ็ดด้วย นี่คือสิ่งที่จะดูเหมือน:
[a-z]{4,7,11}
มีตัวระบุเพิ่มเติมอีกสองสามตัวที่คุณอยากรู้เกี่ยวกับ
ตกลงดังนั้นยังมีปริมาณมากขึ้น! ตัวระบุสองสามตัวสุดท้ายเหล่านี้มีไว้สำหรับเมื่อคุณต้องการระบุความยาวของสตริงโดยไม่เจาะจงเกินไป
ตัวอย่างเช่น สมมติว่าคุณต้องการค้นหาสตริงที่มีความยาวเท่าใดก็ได้ที่ regex สามารถจับคู่ได้ เหมือนชื่อ! ชื่อ (ในประเทศตะวันตก) ขึ้นต้นด้วยตัวพิมพ์ใหญ่หนึ่งตัวและลงท้ายด้วยตัวอักษรพิมพ์เล็กแบบสุ่ม ตามด้วยเว้นวรรค หากต้องการค้นหาชื่อ คุณจะต้องเขียนโค้ดต่อไปนี้:
[A-Z][a-z]*
[A-Z]
ระบุว่าอักขระตัวแรกของสตริงควรเป็นตัวพิมพ์ใหญ่ [a-z]*
ระบุว่าส่วนที่เหลือของสตริงควรประกอบด้วยอักษรตัวพิมพ์เล็ก แต่ไม่สำคัญว่าจะมีกี่ตัวอักษรต่อจากนี้ และการเว้นวรรคตอนท้ายหมายความว่าจะสิ้นสุดการจับคู่เมื่อพบช่องว่างที่ท้ายอักษรตัวพิมพ์เล็ก
คอมโบสีทองใน regex คือ .*
. นั่นหมายถึงจับคู่ตัวละครใด ๆ อย่างไม่สิ้นสุด กล่าวคือจะจับคู่เนื้อหาทั้งหมดเป็นรายการเดียว
ตัวระบุถัดไปที่คุณต้องรู้คือ +
. อันนี้ก็เหมือน *
ยกเว้นว่าจะไม่จับคู่สตริงที่มีอักขระเป็นศูนย์ *
จะจับคู่ความยาวของสตริง ซึ่งรวมถึงสตริงที่ไม่มีความยาว +
ในทางกลับกัน ต้องการสตริงที่มีอักขระอย่างน้อยหนึ่งตัวขึ้นไป
สุดท้ายมี ?
ปริมาณ นี่เป็นเรื่องแปลก ระบุว่าสตริงมีความยาวอักขระเป็นศูนย์หรือมีความยาวหนึ่งอักขระ แค่นั้นแหละ - ไม่มีอะไรหรือแค่อันเดียว ดังนั้นหากคุณใช้รหัส [a-z]?
ด้วยช่องว่างที่จุดเริ่มต้นและจุดสิ้นสุด มันจะค้นหาตัวอักษรตัวเดียวภายในเนื้อหาของข้อความ
ค้นหาอักขระที่จุดเริ่มต้นและจุดสิ้นสุดของสตริงข้อความ
เราใกล้จะสิ้นสุดคำแนะนำเกี่ยวกับการใช้ regex กับคำสั่งลัดแล้ว! มีโค้ด regex อีกสองประเภทที่คุณจะใช้กับคำสั่งลัด
ตัวแรกคืออักขระที่อนุญาตให้คุณจับคู่สตริงตามวิธีที่เริ่มต้นและ/หรือสิ้นสุด
เมื่อไม่อยู่ในวงเล็บ ^
บทบาทของตัวละครเปลี่ยนจากความหมาย "ยกเว้น" เป็น "เริ่มต้นด้วย" ระบุว่าสตริงควรเริ่มต้นด้วยสิ่งที่คุณต้องการ ตัวอย่างเช่น ถ้าคุณเขียน ^อา
ซึ่งจะตรงกับตัวอักษร "A" ในสตริง "Alright", "Apple" และ "A"
มันไม่ตรงกับทั้งคำแม้ว่า เพื่อที่คุณจะต้องเปลี่ยนเป็น ^A[A-Za-z]*
. ซึ่งจะตรงกับคำแรกของย่อหน้า/สตริง ตราบใดที่คำนั้นขึ้นต้นด้วยตัวพิมพ์ใหญ่ "A"
เป็นหมายเหตุด้านข้างคุณสามารถเขียน [A-Za-z]
เช่น [A-z]
. มันหมายถึงสิ่งเดียวกัน ฉันเพิ่งพบว่าสิ่งแรกชัดเจนขึ้นเล็กน้อยเมื่อคุณกำลังเรียนรู้
ในการระบุจุดสิ้นสุดของสตริง คุณจะต้องใช้เครื่องหมาย $
อักขระ. มันทำงานเหมือนกับ ^
อักขระ. ข้อแตกต่างเพียงอย่างเดียวคือคุณเขียนมันที่ส่วนท้ายของวงเล็บปีกกา / สตริงแทนที่จะเป็นจุดเริ่มต้น
ตัวอย่างเช่น หากคุณต้องการค้นหาสตริง/ย่อหน้าที่ลงท้ายด้วย “le” คุณจะต้องใช้รหัส [A-z]*le$
. ซึ่งจะตรงกับ "Table", "apple" และ "capable" ตราบเท่าที่อยู่ท้ายสตริงหรือย่อหน้า
Regex จะปฏิเสธการแข่งขันนี้หากมีช่องว่างหรือเครื่องหมายวรรคตอนที่ส่วนท้ายของสตริง "ตาราง." จะไม่ถูกจับคู่ด้วยรหัสนี้
ในการแก้ไขปัญหานั้น คุณสามารถคำนึงถึงเครื่องหมายวรรคตอนได้ รหัสนี้อธิบายรูปแบบต่างๆ ของเครื่องหมายวรรคตอนและการเว้นวรรคที่อาจเกิดขึ้นที่ส่วนท้ายของสตริง รวมถึงเครื่องหมายวรรคตอนตามด้วยการเว้นวรรค:
[A-z]*(le[\.\?!, ]?[ ]?)$
รหัสนั้นจะตรงกับ "Able", "table", "stable" และ "capable? “.
จัดเก็บสตริงข้อความโดยใช้ฟังก์ชันการจัดกลุ่มของ regex ด้วย Shortcuts
ไม่เป็นอะไร! คุณมาถึงจุดสิ้นสุดของคู่มือ AppleToolBox เกี่ยวกับการใช้ regex กับทางลัดแล้ว เหลือฟังก์ชัน regex อีกหนึ่งฟังก์ชันให้เรียนรู้ นั่นคือการจัดกลุ่ม
การจัดกลุ่มอาจเป็นคุณลักษณะที่สำคัญที่สุดของ regex เนื่องจากเป็นสิ่งที่ช่วยให้คุณทำสิ่งต่างๆ กับโค้ด regex ที่คุณเขียนได้ หากไม่มี regex ก็เป็นเพียงคุณลักษณะการค้นหา ข้อมูลนี้สามารถบอกคุณได้เฉพาะเมื่อมีสตริงอยู่ภายในเนื้อหาที่ใหญ่ขึ้น กล่าวคือ สตริงจะส่งคืน "จริง" หรือ "เท็จ"
อย่างไรก็ตาม ด้วยการจัดกลุ่ม คุณสามารถจัดเก็บผลลัพธ์ของโค้ด regex ของคุณได้ และนั่นหมายความว่าคุณสามารถคัดลอกรายการที่ตรงกัน เก็บไว้ในตัวแปร แทนที่ด้วยข้อความอื่น แก้ไขการจัดรูปแบบ และทุกอย่างที่คุณต้องการทำกับ regex
โชคดีที่การจัดกลุ่มทำได้ง่ายมาก! แค่ใส่อะไรลงไปในวงเล็บ ()
. สิ่งที่คุณใส่ในวงเล็บจะถือว่าเป็นกลุ่ม
หากคุณใส่โค้ด regex ทั้งบรรทัดในวงเล็บ เช่น (.*@.*\..{3})
จากนั้นรหัสของคุณจะจดจำกลุ่มนั้น ซึ่งจะทำให้สามารถเรียกคืนได้ในภายหลัง
สิ่งสำคัญคือคุณต้องใช้กลุ่มเมื่อจำเป็นเท่านั้น เนื่องจากถูกเก็บไว้ในหน่วยความจำ จึงอาจทำให้ประสิทธิภาพของโค้ดลดลงได้ บันทึกกลุ่มเมื่อพวกเขาต้องการ!
คุณสามารถใช้กลุ่มสำหรับองค์กรได้เช่นกัน
คุณยังสามารถใช้กลุ่มเพื่อจัดระเบียบโค้ด regex ของคุณด้วยคำสั่งลัด เมื่อคุณทำเช่นนี้ คุณไม่จำเป็นต้องจำกลุ่มที่อยู่ในวงเล็บ
ตัวอย่างเช่น พูดว่าฉันต้องการจับคู่คำว่า "สวัสดี" เว้นแต่ว่าฉันไม่สนใจว่าตัวอักษรตัวสุดท้ายคืออะไร อาจเป็นอักษรตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ หรือแม้แต่ตัวเลขก็ได้ “Hell3838djdjajaksks” และ “Hello” ควรนับเป็นการจับคู่ ในทางกลับกัน ไม่ควรนับ “นรก”
เพื่อให้งานนี้ฉันเขียนโค้ด นรก[A-z]|[0-9]+
. แต่นี่คือผลลัพธ์ที่ฉันได้รับ:
เหตุผลที่ไม่ตรงกับที่ฉันคาดไว้ก็คือ +
ถูกนำไปใช้กับ .เท่านั้น [0-9]
วงเล็บ ฉันต้องการมันเพื่อใช้กับวงเล็บทั้งสอง
นอกจากนี้ รหัสนี้บอกว่าฉันต้องการอย่างใดอย่างหนึ่ง นรก[A-z]
หรือ[0-9]
. ดังนั้นจึงจับคู่คำที่ขึ้นต้นด้วย "นรก" และลงท้ายด้วยตัวอักษรหรือมองหาสตริงตัวเลข สิ่งที่ฉันต้องการจริงๆ คือเพื่อให้ตรงกับอินสแตนซ์ของคำว่า "นรก" ที่ลงท้ายด้วยตัวอักษรหรือตัวเลข
ในการแก้ไขปัญหานี้ ฉันสามารถใช้กลุ่มและเขียนโค้ดใหม่เป็น นรก([A-z]|[0-9])+
. ตอนนี้กำลังค้นหาคำว่า "นรก" ตามด้วยตัวอักษรหรือตัวเลขใดๆ และเพราะว่า +
ใช้กับวงเล็บทั้งสอง อาจเป็นการผสมผสานระหว่างตัวอักษรและตัวเลข ตราบใดที่มีตัวอักษรหรือตัวเลขอย่างน้อยหนึ่งตัว
ดังที่คุณเห็นในภาพหน้าจอด้านล่าง กลุ่มนี้จะแก้ปัญหาของฉันโดยไม่จำเป็นต้องจัดเก็บข้อมูลภายในกลุ่มนั้น:
ตอนนี้อะไร?
และนั่นแหล่ะ! นั่นคือเกือบทุกอย่างที่คุณต้องการทราบเกี่ยวกับการใช้ regex กับคำสั่งลัด หวังว่าคุณจะรู้สึกมั่นใจมากพอที่จะเริ่มทดลองกับ regex ในตอนนี้ แม้ว่าตอนแรกจะไม่สมเหตุสมผลสำหรับคุณก็ตาม
เมื่อคุณรู้พื้นฐานของ regex แล้ว คุณก็พร้อมที่จะเริ่มใช้ในคำสั่งลัดของคุณแล้ว! ทางลัดยอมรับอินพุต regex ในการดำเนินการต่อไปนี้:
- จับคู่ข้อความ
- แทนที่ข้อความ
เมื่อใช้การกระทำคำสั่งลัดทั้งสองนี้ คุณสามารถแทรก regex ลงในคำสั่งลัดของคุณได้
จับคู่สิ่งนี้กับความสามารถอัตโนมัติของคำสั่งลัด และคุณมีเครื่องมือที่ทรงพลังพร้อมใช้
คุณสามารถใช้ regex เพื่อทำให้การจัดรูปแบบข้อความในคำสั่งลัดง่ายขึ้น เพื่อดึงข้อมูลจากอีเมล ข้อความ เว็บไซต์ ไฟล์ และกิจกรรมในปฏิทิน สร้างข้อความตามรูปแบบที่กำหนด ตรวจสอบว่าป้อนข้อมูลถูกต้อง และ มากกว่า.
ตัวอย่างเช่น สมมติว่าคุณต้องการจับคู่อีเมล บางทีคุณอาจต้องตรวจสอบว่าสตริงข้อความเป็นอีเมล หรือบางทีคุณอาจต้องการดึงอีเมลออกจากเนื้อหาของข้อความ
คุณจะทำลายสิ่งนี้ได้อย่างไร?
คุณก็รู้ว่าโครงสร้างพื้นฐานของอีเมลจะเป็นการผสมผสานระหว่างตัวอักษร ตัวเลข และอักขระ ตามด้วยสัญลักษณ์ “@” แล้ว ตามด้วยชื่อเว็บไซต์ เช่น Gmail หรือ iCloud ตามด้วย “.com”, “.org” หรืออักขระสามตัวระดับบนสุด โดเมน.
ในการเขียนใน regex คุณต้องระบุว่าคุณต้องการสตริงที่มีความยาวอย่างน้อยหนึ่งอักขระที่ตามมาทันที ด้วยสัญลักษณ์ “@” ตามด้วยสตริงอื่นที่มีอักขระอย่างน้อยหนึ่งตัว ตามด้วย “.” แล้วตามด้วยสตริงที่มีอักขระสามตัว ตัวอักษร ที่จะมีลักษณะเช่นนี้:
[ป้องกันอีเมล]+\..{3}
หากคุณวางสิ่งนี้ลงใน จับคู่ข้อความ หรือ แทนที่ข้อความ การดำเนินการในคำสั่งลัด คุณจะมีระบบอัตโนมัติที่สามารถค้นหา จัดเก็บ และจัดการที่อยู่อีเมลได้
คุณสามารถใช้การแก้ปัญหาประเภทนี้เพื่อสร้างโซลูชัน regex ของคุณเองหรือค้นหาบางอย่างที่คนอื่นทำทางออนไลน์ได้!
เริ่มใช้ regex ด้วยคำสั่งลัดเพื่อยกระดับการทำงานอัตโนมัติของคุณไปอีกระดับ
และเพื่อนก็เป็นอย่างนั้นจริงๆ ฉันหวังว่าคุณจะสนุกกับการติดตามบทความนี้! นี่เป็นหนึ่งในงานที่มีความทะเยอทะยานมากขึ้นที่ฉันเคยเขียนสำหรับ AppleToolBox ฉันต้องสอนตัวเองให้เขียน regex และหวังว่าในการทำเช่นนั้น ฉันสามารถช่วยให้คุณเรียนรู้ได้
การใช้ regex กับคำสั่งลัดนั้นไม่ต่างไปจากการเรียนรู้วิธีการทำอย่างอื่นบนสมาร์ทโฟนหรือคอมพิวเตอร์ของคุณ แค่ใช้เวลาและความอดทน แล้วในที่สุด คุณก็จะไปถึงที่นั่น
สำหรับคำแนะนำ บทช่วยสอน และข่าวสารเพิ่มเติมเกี่ยวกับทุกสิ่งที่ Apple โปรดดูส่วนที่เหลือของ บล็อก AppleToolBox.
ไม่เป็นอะไร [A-Z][a-z]+
เจอกันใหม่ครั้งหน้าค่ะ!