มีอักขระ ตัวดำเนินการ และโครงสร้างหลายประเภทที่ให้คุณกำหนดนิพจน์ทั่วไปได้
หนึ่งในนั้นคือการจัดกลุ่มโครงสร้าง โครงสร้างการจัดกลุ่มอธิบายนิพจน์ย่อยของนิพจน์ทั่วไปและจับสตริงย่อยของสตริงอินพุต ตารางต่อไปนี้แสดงรายการโครงสร้างการจัดกลุ่ม
การจัดกลุ่ม | คำอธิบาย | รูปแบบ | ตรงกัน |
---|---|---|---|
( นิพจน์ย่อย ) | จับนิพจน์ย่อยที่ตรงกันและกำหนดเป็นเลขลำดับแบบอิงศูนย์ | (\w)\1 | "ee" ใน "ลึก" |
(?<ชื่อ>นิพจน์ย่อย) | จับนิพจน์ย่อยที่ตรงกันในกลุ่มที่มีชื่อ | (? | "ee" ใน "ลึก" |
(? | กำหนดคำจำกัดความของกลุ่มที่สมดุล | (((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(เปิด )(?!))$ | "((1-3)*(3-1))" ใน "3+2^((1-3)*(3-1))" |
(?:นิพจน์ย่อย) | กำหนดกลุ่มที่ไม่จับ | เขียน(?:Line)? | "WriteLine" ใน "Console.WriteLine()" |
(?imnsx-imnsx:subexpression) | ใช้หรือปิดใช้งานตัวเลือกที่ระบุภายใน นิพจน์ย่อย | A\d{2}(?i:\w+)\b | "A12xl", "A12XL" ใน "A12xl A12XL a12xl" |
(?=นิพจน์ย่อย) | การยืนยันการมองไปข้างหน้าแบบไม่มีความกว้าง | \w+(?=\.) | "is", "ran" และ "out" ใน "He is. The dog ran. The sun is out." |
(?! นิพจน์ย่อย) | การยืนยันการมองไปข้างหน้าเชิงลบที่มีความกว้างเป็นศูนย์ | \b(?!un)\w+\b | "แน่ใจ", "ใช้แล้ว" ใน "ไม่แน่ใจว่าใช้ความสามัคคี" |
(?<=subexpression) | การมองหลังการยืนยันแบบไม่มีความกว้างเป็นศูนย์ | (?<=19)\d{2}\b | "51", "03" ใน "1851 1999 1950 1905 2003" |
(? | การมองหลังการยืนยันเชิงลบที่มีความกว้างเป็นศูนย์ | (? | "ends", "ender" ใน "end ส่งผู้ให้ยืม" |
(?> นิพจน์ย่อย) | นิพจน์ย่อยไม่ติดตาม (หรือ "โลภ") | [13579](?>A+B+) | "1ABB", "3ABB" และ "5AB" ใน "1ABB 3ABBC 5AB 5AC" |