ไวยากรณ์ของนิพจน์ทั่วไป

หากต้องการสร้างนิพจน์ทั่วไป คุณจะต้องใช้ไวยากรณ์ตามที่กำหนด กล่าวคือ จะต้องใช้อักขระพิเศษและกฎของการเขียนนิพจน์ ตัวอย่างเช่น ต่อไปนี้เป็นนิพจน์ทั่วไปแบบง่ายที่จับคู่หมายเลขโทรศัพท์ที่มี 10 หลัก ในรูปแบบ nnn-nnn-nnnn

\d{3}-\d{3}-\d{4}

ตารางต่อไปนี้อธิบายถึงอักขระพิเศษที่มักใช้ในนิพจน์ทั่วไป อักขระเหล่านี้แบ่งออกเป็นประเภทต่างๆ ดังนี้

อักขระ คำอธิบาย
แองเคอร์
^ (คาเร็ต) จับคู่จุดเริ่มต้นของบรรทัดหรือสตริงข้อความที่นิพจน์ทั่วไปนั้นจะค้นหา เช่น กฎเนื้อหาที่มีบรรทัดหัวเรื่องตำแหน่งและนิพจน์ทั่วไปต่อไปนี้

^abc

จะบันทึกข้อความอีเมลใดก็ได้ที่มีบรรทัดหัวเรื่องที่ขึ้นต้นด้วยตัวอักษร abc
$ (ดอลลาร์) จับคู่ท้ายบรรทัดหรือสตริงข้อความที่นิพจน์ทั่วไปนั้นจะค้นหา เช่น กฎเนื้อหาที่มีบรรทัดหัวเรื่องตำแหน่งและนิพจน์ทั่วไปต่อไปนี้

xyz$

จะบันทึกข้อความอีเมลที่มีบรรทัดหัวเรื่องที่ลงท้ายด้วยตัวอักษร xyz
อักขระเมตา
(จุด) จับคู่อักขระตัวเดียว ยกเว้นอักขระขึ้นบรรทัดใหม่
| (ไปป์) แสดงถึงค่าที่สลับกันได้ ซึ่งก็คือ "หรือ" เช่น

cat|dog จะจับคู่กับคําว่า cat หรือ dog
\ ระบุว่าอักขระถัดไปเป็นอักขระตามจริง แทนที่จะเป็นอักขระพิเศษ เช่น

\. จะจับคู่กับจุดทศนิยม ไม่ใช่อักขระใดๆ (อักขระจุด)
ชั้นของอักขระ
[...] จับคู่อักขระใดก็ได้จากชุดของอักขระ คั่นอักขระตัวแรกและตัวสุดท้ายด้วยเครื่องหมายขีดกลาง เช่น

[123] จะจับคู่กับตัวเลข 1, 2 หรือ 3

[a-f] จะจับคู่กับอักขระใดๆ ก็ตามตั้งแต่ a จนถึง f

หมายเหตุ: นิพจน์ทั่วไปในนโยบายการปฏิบัติตามข้อกำหนดของเนื้อหาจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
[^...] จับคู่อักขระใดก็ได้ที่ไม่อยู่ในชุดของอักขระ เช่น

[^a-f]จะจับคู่กับอักขระใดๆ ก็ตามที่ไม่ใช่ a ถึง f

หมายเหตุ: นิพจน์ทั่วไปในนโยบายการปฏิบัติตามข้อกำหนดของเนื้อหาจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
[:alnum:] จับคู่อักขระที่เป็นตัวอักษรและตัวเลขคละกัน (ตัวอักษรหรือตัวเลข):

a-z, A-Z หรือ 0-9

หมายเหตุ: ชั้นอักขระนี้จะต้องอยู่ในวงเล็บเหลี่ยมอีกชุดหนึ่งเมื่อใช้ในนิพจน์ทั่วไป เช่น [[:alnum:]]
[:alpha:] จับคู่อักขระที่เป็นตัวอักษร (ตัวอักษร):

a-z หรือ A-Z

หมายเหตุ: ชั้นอักขระนี้จะต้องอยู่ในวงเล็บเหลี่ยมอีกชุดหนึ่งเมื่อใช้ในนิพจน์ทั่วไป เช่น [[:alpha:]]
[:digit:] จับคู่ตัวเลข:

0-9

หมายเหตุ: ชั้นอักขระนี้จะต้องอยู่ในวงเล็บเหลี่ยมอีกชุดหนึ่งเมื่อใช้ในนิพจน์ทั่วไป เช่น [[:digit:]]
[:graph:] จับคู่อักขระที่ปรากฏเท่านั้น หมายถึงอักขระทั้งหมดยกเว้นอักขระเว้นวรรค อักขระควบคุม และอื่นๆ

หมายเหตุ: ชั้นอักขระนี้จะต้องอยู่ในวงเล็บเหลี่ยมอีกชุดหนึ่งเมื่อใช้ในนิพจน์ทั่วไป เช่น [[:graph:]]
[:punct:] จับคู่อักขระเครื่องหมายวรรคตอนและสัญลักษณ์ ได้แก่

! " # $ % & ' ( ) &ast; + , \ -. / : ; < = > ? @ [ ] ^ _ ` { | }

หมายเหตุ: ชั้นอักขระนี้จะต้องอยู่ในวงเล็บเหลี่ยมอีกชุดหนึ่งเมื่อใช้ในนิพจน์ทั่วไป เช่น [[:punct:]]
[:print:] จับคู่อักขระที่ปรากฏและอักขระเว้นวรรค

หมายเหตุ: ชั้นอักขระนี้จะต้องอยู่ในวงเล็บเหลี่ยมอีกชุดหนึ่งเมื่อใช้ในนิพจน์ทั่วไป เช่น [[:print:]]
[:space:] จับคู่อักขระที่เป็นการเว้นช่องว่างทั้งหมด รวมถึงอักขระเว้นวรรค แท็บ และการขึ้นบรรทัดใหม่

หมายเหตุ: ชั้นอักขระนี้จะต้องอยู่ในวงเล็บเหลี่ยมอีกชุดหนึ่งเมื่อใช้ในนิพจน์ทั่วไป เช่น [[:space:]]
[:word:] จับคู่อักขระใดก็ได้ของคำ ซึ่งก็คือตัวอักษร ตัวเลข หรือขีดล่าง:

a-z, A-Z, 0-9 หรือ _

หมายเหตุ: ชั้นอักขระนี้จะต้องอยู่ในวงเล็บเหลี่ยมอีกชุดหนึ่งเมื่อใช้ในนิพจน์ทั่วไป เช่น [[:word:]]
ชั้นอักขระแบบย่อ
\w จับคู่อักขระใดก็ได้ของคํา ซึ่งก็คือตัวอักษร ตัวเลข หรือขีดล่าง

a-z, A-Z, 0-9 หรือ _

เทียบเท่ากับ [:word:]
\W จับคู่อักขระทั้งหมดที่ไม่ประกอบเป็นคำ ได้แก่ อักขระที่ไม่ใช่ตัวอักษร ตัวเลข หรือเครื่องหมายขีดล่าง

เทียบเท่ากับ [^[:word:]]
\s จับคู่อักขระที่เป็นการเว้นช่องว่างทั้งหมด เช่น ใช้อักขระนี้เพื่อระบุการเว้นวรรคระหว่างคำในวลี

stockstips จับคู่กับวลี stock tips

เทียบเท่ากับ [:space:]
\S จับคู่กับอักขระทั้งหมดที่ไม่ใช่การเว้นช่องว่าง

เทียบเท่ากับ [^[:space:]]
\d จับคู่ตัวเลขใดก็ได้ตั้งแต่ 0-9

เทียบเท่ากับ [:digit:]
\D จับคู่อักขระทั้งหมดที่ไม่ใช่ตัวเลขตั้งแต่ 0-9

เทียบเท่ากับ [^[:digit:]]
กลุ่ม
(...) จัดกลุ่มส่วนต่างๆ ของนิพจน์ ใช้การจัดกลุ่มเพื่อใช้ตัวขยายกับกลุ่ม หรือเพื่อจับคู่ชั้นอักขระก่อนหรือหลังกลุ่ม
ตัวขยาย
{n} จับคู่นิพจน์ที่อยู่ก่อนหน้าเป็นจำนวน n ครั้ง เช่น

[a-c]{2} จะจับคู่ตัวอักษรใดก็ได้ตั้งแต่ a ถึง c เฉพาะเมื่อมีตัวอักษร 2 ตัวปรากฏขึ้นติดต่อกัน ดังนั้น นิพจน์นี้จะจับคู่ ab และ bc แต่ไม่จับคู่ abc หรือ aabbc
{n,m} จับคู่นิพจน์ที่อยู่ก่อนหน้าอย่างน้อย n ครั้ง และไม่เกิน m ครั้ง เช่น

[a-c]{2,4} จะจับคู่ตัวอักษรใดก็ได้ตั้งแต่ a ถึง c เฉพาะเมื่อตัวอักษรเหล่านั้นปรากฏขึ้นอย่างน้อย 2 ครั้ง โดยต้องไม่เกิน 4 ครั้งติดต่อกัน ดังนั้น นิพจน์นี้จะจับคู่ ab และ abc แต่ไม่จับคู่ aabbc
? ระบุว่าสามารถจับคู่อักขระหรือนิพจน์ที่อยู่ก่อนหน้า 0 หรือ 1 ครั้งก็ได้ เทียบเท่ากับช่วง {0,1} เช่น นิพจน์ทั่วไปต่อไปนี้

colou?r

จะจับคู่กับ colour หรือ color เนื่องจาก ? ทำให้มีตัวอักษร u หรือไม่ก็ได้