นิพจน์ปรกติ

นิพจน์ปรกติ () ในวิทยาการคอมพิวเตอร์ คือ สตริงที่อธิบายถึงรูปแบบของสตริงตามโครงสร้างรูปแบบที่กำหนด นิพจน์ปรกตินั้นใช้อยู่แพร่หลายในโปรแกรมประเภท 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$ เป็นต้น

โดยเครื่องหมายต่างๆ สามารถสร้างนิพจน์ปรกติที่ซ้ำซ้อนและมีประสิทธิภาพสูงได้ ซึ่งคล้ายกับการสร้างนิพจน์คณิตศาสตร์นั้นเอง

แหล่งข้อมูลอื่น 
 นิพจน์ปรกติในดอตเน็ต
 ทดสอบการค้นหานิพจน์ปรกติด้วยจาวาสคริปต์

ภาษารูปนัย
การเขียนโปรแกรม