นิพจน์ปรกติ
บทความนี้ไม่มีการอ้างอิงจากแหล่งที่มาใด |
นิพจน์ปรกติ (อังกฤษ: regular expression สามารถย่อได้เป็น regexp หรือ regex) ในวิทยาการคอมพิวเตอร์ คือ สตริงที่อธิบายถึงรูปแบบของสตริงตามโครงสร้างรูปแบบที่กำหนด นิพจน์ปรกตินั้นใช้อยู่แพร่หลายในโปรแกรมประเภท Text editor ในการค้นหาและปรับเปลี่ยนข้อความ ภาษาโปรแกรมหลายภาษายังรองรับการใช้นิพจน์ปรกติสำหรับการจัดการและปรับเปลี่ยนสตริง
ภาพรวม
[แก้]นิพจน์ปรกติ ใช้อธิบายรูปแบบสตริง ซึ่งการอธิบายมักจะกระชับและรัดกุมโดยที่ไม่ต้องอธิบายเป็นรายชื่อทั้งหมด ยกตัวอย่างเช่นคำว่า ปกติ และ ปรกติ สามารถอธิบายได้ว่า "ป(ร?)กติ" ซึ่งส่วนใหญ่มีโครงสร้างการใช้ดังนี้:
การสร้างทางเลือก
[แก้]- |
เครื่องหมายขีดตั้ง ใช้สำหรับสร้างทางเลือกที่จะใช้ค้นหานิพจน์ เช่น "express|expand" มีความหมายว่า express หรือ expand
การจัดกลุ่ม
[แก้]- ( )
วงเล็บ ใช้ในการกำหนดลำดับและขอบเขตของนิพจน์ เช่น "ex(pres|pan)sion" มีความหมายว่า expression หรือ expansion
การบอกจำนวน
[แก้]- ?
ปรัศนี ใช้บ่งบอกว่ามีนิพจน์ก่อนหน้านี้จำนวน 0 หรือ 1 นิพจน์ (มีนิพจน์หรือไม่มีก็ได้) เช่น "ปร?กติ" มีความหมายว่า ปกติ หรือ ปรกติ
- *
เครื่องหมายดอกจัน ใช้บ่งบอกว่ามีนิพจน์ก่อนหน้านี้จำนวน 0 นิพจน์หรือมากกว่า เช่น "go*gle" มีความหมายว่า ggle gogle google gooogle เป็นต้น
- +
เครื่องหมายบวก ใช้บ่งบอกว่ามีนิพจน์ก่อนหน้านี้จำนวน 1 นิพจน์หรือมากกว่า เช่น "go+gle" มีความหมายว่า gogle google gooogle เป็นต้น แต่ไม่เท่ากับ ggle
- {n}
วงเล็บปีกกาใช้บ่งบอกว่าต้องมีนิพจน์ก่อนหน้านี้จำนวน n นิพจน์ เช่น "go{5}gle" มีความหมายว่า gooooogle เพียงตัวเดียว
- {m,n}
วงเล็บปีกกาที่มีจุลภาคข้างใน ใช้บ่งบอกว่าต้องมีนิพจน์ก่อนหน้านี้จำนวน m นิพจน์ถึง n นิพจน์ เช่น "go{2,4}gle" มีความหมายว่า google gooogle และ goooogle หากไม่ระบุตัวเลข n จะหมายถึงต้องมีนิพจน์จำนวนตั้งแต่ m นิพจน์เป็นต้นไป
การระบุตำแหน่ง
[แก้]- ^
เครื่องหมายหมวก ใช้เขียนเป็นตัวแรกสุดของนิพจน์ปรกติ เพื่อบ่งบอกว่านิพจน์ที่ต้องการค้นหาอยู่ต้นบรรทัดหรือต้นสตริงเท่านั้น สามารถใช้คู่กับ $
- $
เครื่องหมายสกุลเงิน ดอลลาร์ ใช้เขียนเป็นตัวท้ายสุดของนิพจน์ปรกติ เพื่อบ่งบอกว่านิพจน์ที่ต้องการค้นหาอยู่ท้ายบรรทัดหรือท้ายสตริงเท่านั้น สามารถใช้คู่กับ ^
การระบุช่วงอักขระ
[แก้]- [ ]
วงเล็บเหลี่ยม ใช้เขียนแทนอักขระหนึ่งตัวที่อยู่ในขอบเขต ซึ่งระบุไว้ภายในวงเล็บ เช่น "[bcdf]an" มีความหมายว่า ban can dan และ fan
- ^
เครื่องหมายหมวก ใช้เขียนภายในวงเล็บเหลี่ยมเป็นตัวแรก เพื่อบ่งบอกว่าเป็นอักขระหนึ่งตัวที่ไม่ได้อยู่ในขอบเขต เช่น "[^bcdf]an" มีความหมายว่า aan ean gan han ian เป็นต้น
- -
ยัติภังค์ ใช้เขียนภายในวงเล็บเหลี่ยมระหว่างอักขระสองตัว เพื่อบ่งบอกว่าเป็นอักขระหนึ่งตัวที่มีรหัสแอสกีหรือยูนิโคดอยู่ในช่วงนั้น เช่น "[a-z]an" มีความหมายว่า aan ban can เรื่อยไปจนถึง zan
เครื่องหมายอื่นๆ
[แก้]- .
มหัพภาค ใช้บ่งบอกว่าอักขระในตำแหน่งนั้นของนิพจน์จะเป็นตัวอักษรอะไรก็ได้ เช่น ".an" มีความหมายว่า aan ban can 0an 1an -an เป็นต้น
- \
แบ็กสแลช ใช้ระบุ escape character หรือสัญลักษณ์ที่ต้องการใช้ในนิพจน์ แต่ซ้ำกับสัญลักษณ์ที่กล่าวมาทั้งหมดด้านบน เช่น "[0-9]\.[0-9]\$" มีความหมายว่า 2.3$ 9.0$ 1.7$ เป็นต้น
โดยเครื่องหมายต่างๆ สามารถสร้างนิพจน์ปรกติที่ซ้ำซ้อนและมีประสิทธิภาพสูงได้ ซึ่งคล้ายกับการสร้างนิพจน์คณิตศาสตร์นั้นเอง