Double Commander

2.14.ไวยากรณ์ของนิพจน์ปกติ

เนื้อหา

1. บทนํา
2. จับคู่ง่ายๆ
3. หนี ลําดับ
4. คลาสตัวละคร
5. อักขระเมตา
5.1. อักขระเมตา - ตัวแบ่งบรรทัด
5.2. - คลาสที่กําหนดไว้ล่วงหน้า
5.3. - ขอบเขตคํา
5.4. เมตาอักขระ - อิเทอเรเตอร์
5.5. อักขระกํากับภาพ - แทน
5.6. เมตาอักขระ - การแสดงออกย่อย
5.7. อักขระกำกับภาพ - ตัวอ้างอิงย้อนกลับ
6. การยืนยัน (การยืนยันที่มองไปข้างหน้าและย้อนหลัง)
7. กลุ่มที่ไม่ได้จับ
8. อะตอม ก ลุ่ ม เ ป็ น ก ลุ่ ม
9. ประเภท Unicode
10. ตัวปรับแต่ง

ผู้บัญชาการ คู่ ใช้ ห้องสมุด ฟรี ที่ เขียน โดย Andrey Sorokin TRegExpr เป็น ผลิตภัณฑ์ ที่ ได้รับ การ ออกแบบ มา เพื่อ ตอบ สนองความต้องการ ของ ลูกค้า

คําอธิบายส่วนใหญ่มาจากไฟล์ช่วยเหลือของห้องสมุด

1.บทนํา

นิพจน์ปกติเป็นวิธีการที่ใช้กันอย่างแพร่หลายในการระบุรูปแบบการค้นหาข้อความอักขระพิเศษ (อักขระเมตา) ช่วยให้เราสามารถระบุตัวอย่างเช่นสตริงเฉพาะที่เรากําลังมองหาปรากฏที่จุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดหรือที่มีอักขระหรือกลุ่มของอักขระเ ห มื อ น เ ห มื อ น กั นการปรากฏตัวครั้งที่สอง

ผู้บัญชาการคู่สนับสนุนการแสดงออกปกติในคุณสมบัติต่อไปนี้:

ไลบรารี TRegExp รองรับโหมดการทำงาน 2 โหมด คือ ANSI และ Unicodeเมื่อค้นหาในไฟล์ข้อความ Double Commander จะใช้ทั้งสองอย่าง (ขึ้นอยู่กับการเข้ารหัสไฟล์)เมื่อค้นหาด้วยชื่อ ให้ใช้ Unicode

2.จับคู่ง่ายๆ

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

ชุดของตัวอักษรตรงกับชุดของตัวอักษรในสตริงเป้าหมายดังนั้นรูปแบบbluhจะ ตรง กับ ค่า ที่ มี อยู่ ใน สตริง เป้าหมายbluh

เราสามารถสร้าง ได้โดยการสร้าง ใน หรือหนี ลําดับนําหน้าด้วย สแลช\เพื่อให้สามารถอธิบายได้ด้วยคําพูด เช่น เมตาอักขระ^ตรงกับจุดเริ่มต้นของสตริง แต่\^ตัวละครที่ตรงกัน^\\การจับคู่\รอ รอ

นี่คือตัวอย่าง:

ตัวอย่างการจับคู่อย่างง่าย
สํานวนผลลัพธ์ที่ได้
foobar และ
ตรงกับสตริงfoobar
FooBarPtr - เ พื่ อ น เ ห มื อ น กั น
การจับคู่^FooBarPtr

3.หนี ลําดับ

คุณสามารถระบุอักขระโดยใช้ไวยากรณ์ลำดับการหลบหนีคล้ายกับที่ใช้ใน C และ Perl:\nตรงกับบรรทัดใหม่\tจับคู่แท็บ ฯลฯ

แ ล ะ เ มื่ อ พว ก เ ข า จ ะ ไ ด้ รั บ\xnn, ของที่nnมันเป็นชุดของเลขฐานสิบหกที่ตรงกับค่า ASCIInnตัวละครของ

หากคุณต้องการรหัสตัวอักษรแบบกว้าง (Unicode) คุณสามารถใช้\x{nnnn}, ของที่nnnn –เลขฐานสิบหก 1 ตัวขึ้นไป

หนี ลําดับ
สํานวนผลลัพธ์ที่ได้
\ xnn เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
ASCII คือnnตัวละครของ
- (ภาษาไทย)
ASCII คือnnnnตัวอักษรของ (หนึ่งไบต์สําหรับข้อความปกติสองไบต์สําหรับ Unicode)
\t เ ป็ น เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง
แท็บ (HT / TAB) เทียบกับ\x09เ พื่ อ น เ ห มื อ น กั น
\n เ พื่ อ น เ ห มื อ น กั บ เ ร า
การแบ่งบรรทัด (NL / LF) ด้วย\x0aเ พื่ อ น เ ห มื อ น กั น
\r เ พื่ อ น เ ห มื อ น กั บ เ ร า
(CR), และ\x0dเ พื่ อ น เ ห มื อ น กั น
\f เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
(FF), - รูปถ่ายของ โรงแรม เดอะ ริเวอร์ไซต์ -\x0cเ พื่ อ น เ ห มื อ น กั น
\a เ ป็ น เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง
การแจ้งเตือน (เสียงเรียกเข้า) (BEL) เทียบกับ\x07เ พื่ อ น เ ห มื อ น กั น
เ พื่ อ น เ ห มื อ น กั บ เ ร า
การหลบหนี (ESC) เทียบกับ\x1bเ พื่ อ น เ ห มื อ น กั น

นี่คือตัวอย่างบางส่วน:

ตัวอย่างลําดับการหลบหนี
สํานวนผลลัพธ์ที่ได้
foo\x 20 บาร์
การจับคู่foo bar(สังเกตช่องว่างตรงกลาง)
\ tfoobar (ทู ฟูบาร์)
ตรงกับที่กำหนดไว้ล่วงหน้าโดยแท็บfoobar

4.คลาสตัวละคร

คุณสามารถใส่รายการตัวอักษรลงใน[]ระบุคลาสอักขระซึ่งจะตรงกับใด ๆ ในรายการหนึ่ง ... ตัวอักษร

ถ้ า เ ป็ น เ รื่ อ ง เ ห มื อ น กั น[แ ล ะ เ ร า จ ะ ไ ด้ รั บ ก า ร เ ป็ นผู้ ศ รั ท ธ า^, แล้ว ใน รายการ ที่ ตรง กัน ของ คลาส นี้ไ ม่ เ ป็ น เ ธ อตัวอักษรใด ๆ ที่มีอยู่

ใ น ก า ร เ รี ย น เ รี ย น-ตัวอักษรที่ใช้ในการระบุเรนจ์, ดังนั้นa-zหมายถึง จากaไปที่zของตัวละครทั้งหมด รวมอยู่ด้วย

หากคุณต้องการ-เป็นสมาชิกของชั้นเรียนของคุณเองวางไว้ที่จุดเริ่มต้นหรือจุดสิ้นสุดของรายการหรือหลบหนีด้วย

หากคุณต้องการที่จะใช้]คุณสามารถวางไว้ที่จุดเริ่มต้นของรายการหรือหลบหนีด้วย

คลาสตัวละคร
สํานวนผลลัพธ์ที่ได้
[- az]
การจับคู่azและ-
[ az- ]
การจับคู่azและ-
[a\-z] เ พื่ อ น เ ห มื อ น กั น
การจับคู่azและ-
[a-z] เ พื่ อ น เ ห มื อ น กั น
จับคู่จากaไปที่zของตัวอักษรตัวเล็กทั้ง 26 ตัว
[\n-\x0D] เ พื่ อ น เ ห มื อ น กั น
ตรงกับใด ๆ\x10\x11\x12\x13
[\ ]
ตรงกับตัวเลขใด ๆ-หรื อt
[ ] - a ]
จับคู่จาก]ไปที่aของตัวละครใด ๆ

นี่คือตัวอย่าง:

ตัวอย่างคลาสตัวอักษร
สํานวนผลลัพธ์ที่ได้
foob [aeiou] r
ค้นหาสายอักขระfoobarfooberฯลฯ แต่ไม่รวมถึงfoobbrfoobcrรอ รอ
foob [^aeiou]r
ค้นหาสายอักขระfoobbrfoobcrฯลฯ แต่ไม่รวมถึงfoobarfooberรอ รอ

5.อักขระเมตา

เมตาอักขระเป็นแก่นแท้ของการแสดงออกปกติและอักขระพิเศษ

มีประเภท ที่แตกต่างกันตามที่อธิบายไว้ด้านล่าง

5.1.อักขระเมตา - ตัวแบ่งบรรทัด

นิพจน์บางตัวช่วยในการตรวจจับการแยกแถว

ตัวแบ่งบรรทัด
สํานวนผลลัพธ์ที่ได้
^
หัวแถว
$
สิ้นสุดแถว
\ ก า ร เ ป็ น ก า ร เ รี ย น
จุดเริ่มต้นของข้อความ
\ Z เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
ท้ายข้อความ
.
อักขระใด ๆ ในบรรทัด

นี่คือตัวอย่าง:

ตัวอย่างการแบ่งบรรทัด
สํานวนผลลัพธ์ที่ได้
^ foobar (ฟูบาร์)
เฉพาะเมื่อสตริงfoobarตรงกับที่หัวแถว
foobar $ เ พื่ อ น เ ห มื อ น กั บ เ ร า
เฉพาะเมื่อสตริงfoobarจับคู่เมื่อสิ้นสุดแถว
^foobar $
เฉพาะเมื่อสตริงfoobarตรงกับเมื่อเป็นสตริงที่ไม่ซ้ํากันในบรรทัด
foob.r - เ ธ อ เ ป็ น เ ธ อ
ตรงกับภาพfoobarfoobbrfoob1rสตริงที่เท่าเทียมกัน

โดยค่าเริ่มต้น^อักขระเมตารับประกันว่าจะตรงกับจุดเริ่มต้นของสตริง / ข้อความที่ป้อนเท่านั้น$ตัวอักษรเมตาจะตรงกันในตอนท้ายเท่านั้นตัวคั่นแถวที่ฝังอยู่จะไม่ถูกฝัง^หรือ$มันตรงกัน

อย่างไรก็ตามคุณอาจต้องการคิดว่าสตริงเป็นบัฟเฟอร์หลายบรรทัดดังนั้น^จะถูกจับคู่หลังจากตัวคั่นบรรทัดใด ๆ ภายในสตริง$จะถูกจับคู่ก่อนตัวแบ่งบรรทัดใด ๆคุณสามารถทําได้โดยการเปิดตัวปรับแต่ง m เพื่อทําให้สําเร็จ

\Aและ\Zเช่น^และ$เหมือนกัน แต่เมื่อใช้ตัวปรับแต่ง m เมื่อพวกเขาไม่ได้จับคู่กันหลายครั้งและ^และ$มันจะถูกจับคู่ที่ตัวคั่นแถวภายในแต่ละตัว

โดยค่าเริ่มต้น.อักขระ ตรงกับอักขระใด ๆ แต่ถ้าปิดตัวปรับแต่ง s แล้ว.ตัวแบ่งบรรทัดที่ฝังอยู่จะไม่ตรงกัน

RegExpr เป็นไปตามมาตรฐานทางเทคนิคของยูนิโคด (มาตรฐานทางเทคนิค # 18) ตัวคั่นแถวการประมวลผล:

ขอ ทราบ ด้วย นะ ครับ ว่า^.*$(โหมดบรรทัดว่าง) จะไม่แสดงใน\x0D\x0Aตรงกับสตริงที่ว่างเปล่าในลําดับ แต่จะอยู่ใน\x0A\x0Dตรงกับสตริงที่ว่างเปล่าในลําดับ

5.2. - คลาสที่กําหนดไว้ล่วงหน้า

นิพจน์บางตัวช่วยในการตรวจหากลุ่มตัวอักษร

คลาสที่กําหนดไว้ล่วงหน้า
สํานวนผลลัพธ์ที่ได้
\ w เ ห มื อ น กั น เ ห มื อ น กั น
ตัวอักษรและตัวเลข (รวม_), นั่นคือ[0-9A-Za-z_]
\ W เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
อักขระที่ไม่ใช่ตัวอักษรและตัวเลข
\d เ ป็ น เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง
ตัวอักษรตัวเลข
\\D เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
ตัวอักษรที่ไม่ใช่ตัวเลข
\ s เ ป็ น เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง
อักขระช่องว่างใด ๆ (และ[ \t\n\r\f]เ ป็ น เ รื่ อ ง เ ห มื อ น กั น เ ห มื อ น กั น
\ S เ ป็ น เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง
อักขระที่ไม่ใช่ช่องว่าง

คุณสามารถปรับแต่งได้ในคลาสตัวละครใช้ในการ\w\dและ\s

นี่คือตัวอย่าง:

ตัวอย่างของคลาสที่กําหนดไว้ล่วงหน้า
สํานวนผลลัพธ์ที่ได้
ดร. ฟูบ
ตรงกับภาพfoob1rfoob6rสายรอ แต่ไม่รวมfoobarfoobbrรอ รอ
foob [\ w \ s ] r
ตรงกับภาพfoobarfoob rfoobbrสายรอ แต่ไม่รวมfoob=rรอ รอ

5.3. - ขอบเขตคํา

ขอบเขตของคํา (\b) คือ ด้านหนึ่งของมัน\wแ ล ะ เ ร า ไ ด้ รั บ ก า ร\Wตําแหน่งระหว่างอักขระสองตัว (ในลําดับใด ๆ) นับอักขระสมมติฐานที่จุดเริ่มต้นและจุดสิ้นสุดของสตริงให้ตรงกัน\W

ขอบเขตคํา
สํานวนผลลัพธ์ที่ได้
เ พื่ อ น เ ห มื อ น กั บ เ ร า
ขอบเขตของคําที่ตรงกัน
\B เ พื่ อ น เ ห มื อ น กั น
การจับคู่ขอบเขตที่ไม่ใช่คํา

5.4.เมตาอักขระ - อิเทอเรเตอร์

รายการใด ๆ ของนิพจน์ปกติสามารถทําตาม ชนิดอื่น –อิ ท ร อ ร์ เ ป็ น เ รื่ อ ง เ ห มื อ น กั น

ด้วยเมตาเหล่านี้ คุณสามารถระบุจำนวนครั้งที่อักขระก่อนหน้านี้ เมตา หรือนิพจน์ย่อยจะปรากฏขึ้น

อิ ท ร า ย เ ป็ น เ รื่ อ ง เ ห มื อ น เ ห มื อ น
สํานวนผลลัพธ์ที่ได้
*
ศูนย์ครั้งหรือมากกว่า ("โลภ") คล้ายกับ{0,}
+
ครั้ง หรือ หลาย ๆ ครั้ง (" โลภะ ") คล้าย{1,}
?
ศูนย์ หรือ ครั้งเดียว ("โลภ") คล้ายกับ{0,1}
{n} เ พื่ อ น เ ห มื อ น กั น
เ ป็ น เ รื่ อ ง ที่ เ ป็ น เ รื่ อ งnครั้ง ("ความโลภ")
{n,} เ พื่ อ น เ ห มื อ น กั น
อย่างน้อยที่สุดnครั้ง ("โลภ")
{n,m} เ พื่ อ น เ ห มื อ น กั น
อย่างน้อยที่สุดnครั้ง แต่ ไม่ เกินmครั้ง ("โลภ")
*?
ศูนย์ครั้งหรือมากกว่า ("ไม่โลภ") คล้ายกับ{0,}?
+?
ครั้งเดียวหรือหลายครั้ง ("ไม่โลภ") คล้ายกับ{1,}?
??
เป็นศูนย์ หรือ ครั้งเดียว ("ไม่โลภ") คล้ายกับ{0,1}?
{ n }?
เ ป็ น เ รื่ อ ง ที่ เ ป็ น เ รื่ อ งnครั้ง ("ไม่โลภ")
{n,}? เ พื่ อ น เ ห มื อ น กั น
อย่างน้อยที่สุดnครั้ง ("ไม่โลภ")
{n, m}?
อย่างน้อยที่สุดnครั้ง แต่ ไม่ เกินmครั้ง ("ไม่โลภ")

ดังนั้นรูปแบบคือ{n,m}ตัวเลขในวงเล็บระบุรายการที่ตรงกันของเ มื่ อ เ มื่ อ เ มื่ อจํานวน ค ว า ม รั ก ข อ ง เ ร าnและแม็กซ์จํานวน ค ว า ม รั ก ข อ ง เ ร าm

แบบฟอร์ม{n}เทียบเท่ากับ{n,n}ตรงกับnครั้งที่สอง

แบบฟอร์ม{n,}การจับคู่nครั้งหรือมากกว่านั้น

nหรื อmไม่มีข้อ จํากัด เกี่ยวกับขนาดของ แต่ตัวเลขขนาดใหญ่จะทําให้การดําเนินการช้าลงและใช้หน่วยความจํามากขึ้น

หากวงเล็บปรากฏในบริบทอื่น ๆ จะถือว่าเป็นตัวอักษรปกติ

นี่คือตัวอย่างบางส่วน:

ตัวอย่างของ
สํานวนผลลัพธ์ที่ได้
foob.* r เ พื่ อ น เ ห มื อ น กั บ เ ร า
ตรงกับภาพfoobarfoobalkjdflkj9rและfoobrสตริงที่เท่าเทียมกัน
foob. + เ พื่ อ น เ ห มื อ น กั นr เ พื่ อ น เ ห มื อ น กั บ เ ร า
ตรงกับภาพfoobarfoobalkjdflkj9rสตริงที่เท่ากัน แต่ไม่รวมfoobr
foob. ? r เ พื่ อ น เ ห มื อ น กั บ เ ร า
ตรงกับภาพfoobarfoobbrและfoobrสตริงที่เท่ากัน แต่ไม่รวมfoobalkj9r
fooba {2} R
ตรงกับสตริงfoobaar
หน้าหลัก /
ตรงกับภาพfoobaarfoobaaarfoobaaaarสตริงที่เท่ากัน
{2,3} r
ตรงกับภาพfoobaarหรือfoobaaarสตริงที่เท่ากัน แต่ไม่รวมfoobaaaar

คําอธิบายเล็กน้อยเกี่ยวกับ "ความโลภ"

"โลภ" เอามากที่สุด "ไม่โลภ" เอาน้อยที่สุด

ตัวอย่างเช่นb+และb*นําไปใช้กับabbbbcกลับไปbbbbb+?กลับbb*?กลับสตริงว่าง,b{2,3}?กลับไปbbb{2,3}กลับbbb

คุณ สามารถ สลับ ทั้งหมด ไป ยัง โหมด ' ไม่ โลภ ' (ดูตัว ปรับ แต่ง g)。

5.5.อักขระกํากับภาพ - แทน

คุณสามารถใช้|แยกชุดของทางเลือกอื่นเพื่อระบุรูปแบบ ดังนั้นfee|fie|foeจะ ตรง กับ ค่า ที่ มี อยู่ ใน สตริง เป้าหมายfeefieหรื อfoef(e|i|o)eเช่นเดียวกับ)

ทางเลือกแรกประกอบด้วยตัวคั่นรูปแบบจากตัวคั่นรูปแบบก่อนหน้า (([หรือจุดเริ่มต้นของรูปแบบ) ไปยังครั้งแรก|ของเนื้อหาทั้งหมดที่มีอยู่ในทางเลือกสุดท้ายจากสุดท้าย|ไปยังตัวแบ่งรูปแบบถัดไป

ดังนั้นจึงเป็นเรื่องปกติที่จะรวมทางเลือกไว้ในวงเล็บเพื่อลดความสับสนเกี่ยวกับตําแหน่งเริ่มต้นและสิ้นสุดของพวกเขา

การทดแทนจะถูกพยายามจากซ้ายไปขวาดังนั้นการทดแทนครั้งแรกที่พบเพื่อให้ตรงกับการแสดงออกทั้งหมดจะถูกเลือก

ซึ่งหมายความว่า ทางเลือกไม่จําเป็นต้องโลภ

ตัวอย่าง: เมื่อใช้foo|footการจับคู่barefootเวลาเท่านั้นfooบางส่วนจะตรงกับเนื่องจากเป็นทางเลือกแรกที่พยายามและประสบความสําเร็จในการจับคู่สตริงเป้าหมาย(อาจไม่สำคัญเมื่อเราใช้วงเล็บเพื่อจับภาพข้อความที่ตรงกัน)

แ ล ะ จ ง จํา ไ ด้ ว่ า|ภายในวงเล็บสี่เหลี่ยมจะถูกตีความว่าเป็นตัวอักษรดังนั้นหากคุณเขียน[fee|fie|foe], จริงๆ แล้ว มันตรงกันเท่านั้น[feio|]

ตัวอย่าง เช่น

ตัวอย่าง การ ใช้ งาน แทน งาน ที่ มี ความ เป็น ไป
สํานวนผลลัพธ์ที่ได้
foo (บาร์| foo) และ
ตรงกับสตริงfoobarหรื อfoofoo

5.6. - นิพจน์ย่อย

การก่อสร้างวงเล็บ( ... )นอกจากนี้ยังสามารถใช้เพื่อกําหนดนิพจน์ย่อยของนิพจน์ปกติ

เมื่อคุณค้นหาแล้ว คุณสามารถเรียกนิพจน์ย่อยใดๆ ก็ได้ และคุณยังสามารถใช้นิพจน์ย่อยเป็นมาสก์ได้อีกด้วย

นิพจน์ย่อยจะถูกกำหนดหมายเลขตามลำดับของวงเล็บซ้ายไปขวา

นิพจน์ย่อยตัวแรกมีหมายเลข 1 และรองรับนิพจน์ย่อยได้สูงสุด 90 นิพจน์ (นิพจน์ปกติทั้งหมดตรงกับหมายเลข 0 – คุณสามารถแทนที่ได้ด้วย$0หรือ$&)。

นี่คือตัวอย่างบางส่วน:

การแสดงออกของเด็ก
สํานวนผลลัพธ์ที่ได้
(foobar) { 8,10 }
การแข่งขันประกอบด้วย 8, 9 หรือ 10foobarส า ร เ รี ย น ส า ร ณ์ ข อ ง เ ร า
foob ([0-9] - เ ห มื อ น กั บ เ ร า| a+) r เ พื่ อ น เ ห มื อ น กั น
การจับคู่foob0rfoob1rfoobarfoobaarfoobaarรอ รอ

หมายเหตุเกี่ยวกับแม่แบบ "แทนที่ด้วย":

ตัวอย่าง เช่น

ขอ ให้ เ ป็ น วั น ที่ เ ป็ น21.01.2018คว่ําเป็น2018.01.21
ค้นหา:(\d{2})\.(\d{2})\.(\d{4})
แทนที่ด้วย:$3.$2.$1

5.7.อักขระกำกับภาพ - ตัวอ้างอิงย้อนกลับ

อักขระเมตา\1ไปที่\9ถูกตีความว่าเป็นการอ้างอิงย้อนกลับ\nตรงกับนิพจน์ย่อยที่ตรงกันก่อนหน้านี้n

นี่คือตัวอย่างบางส่วน:

ตัวอย่างการอ้างอิงย้อนกลับ
สํานวนผลลัพธ์ที่ได้
(.)\ 1 +
การจับคู่aaaaและcc
(.+)\ 1 +
ก็ เ ป็ น ที่ เ ป็ นababและ123123
(['"]?) (\d+) \1 - เ ธ อ เ ป็ น เ ธ อ
การจับคู่"13"(ในเครื่องหมายคําพูดคู่),'4'(ในเครื่องหมายคําพูดเดียว) หรือ77(ไม่มีเครื่องหมายใบเสนอราคา) เป็นต้น

6.การยืนยัน (การยืนยันที่มองไปข้างหน้าและย้อนหลัง)

การยืนยันในเชิงบวก:foo(?=bar)เฉพาะในbarก่อนหน้า ตรงกันfooและbarไม่รวมอยู่ในการจับคู่

การยืนยันการมองไปข้างหน้าในเชิงลบ:foo(?!bar)- รูปถ่ายของ โรงแรมเดอ จาเนโร -barการจับคู่เวลาfoo

การยืนยันในเชิงบวก:(?<=foo)barเฉพาะในfooหลังจากนั้น จับคู่barและfooไม่รวมอยู่ในการจับคู่

การยืนยันการมองย้อนกลับเชิงลบ:(?<!foo)barไม่มีอะไรอยู่ข้างหน้าเลยfooตรงกับเมื่อมีคำนำหน้าbar

ข้อ จํากัด:

7.กลุ่มที่ไม่ได้จับ

ไวยกรณ์(?:expr)

กลุ่มนี้ไม่มี "ดัชนี" และไม่สามารถมองเห็นการอ้างอิงย้อนกลับได้กลุ่มที่ไม่ได้จับภาพจะใช้เมื่อเราต้องการจัดกลุ่มนิพจน์คู่ แต่ไม่ต้องการบันทึกเป็นส่วนที่ตรงกับ / จับภาพของสตริงการใช้กลุ่มที่ไม่ได้จับภาพช่วยให้นิพจน์ปกติทำงานได้เร็วขึ้น

กลุ่มที่ไม่ได้จับ
สํานวนผลลัพธ์ที่ได้
(https) หรือ (https)| ftp): / / ([^ / \ r \ n ] +)
ในhttps://doublecmd.sourceforge.ioจับคู่กลางhttpsและdoublecmd.sourceforge.io
(?: https ? เ ห มื อ น กั บ เ ร า| ftp): / / ([^ / \ r \ n ] +)
ในhttps://doublecmd.sourceforge.ioกลาง เท่านั้นdoublecmd.sourceforge.io

8.อะตอม ก ลุ่ ม เ ป็ น ก ลุ่ ม

ไวยกรณ์(?>expr|expr|...)

กลุ่มอะตอมเป็นกรณีพิเศษของกลุ่มที่ไม่ได้จับภาพ: หากพบส่วนหนึ่งของรูปแบบการจัดกลุ่มดังกล่าวจะปิดการใช้งานการสํารองข้อมูลของกลุ่มวงเล็บกลุ่มอะตอมทำงานได้เร็วขึ้นและมีประโยชน์ในการเพิ่มประสิทธิภาพกลุ่มที่มีนิพจน์ที่แตกต่างกันมากมาย

ตัวอย่างเช่นa(bc|b)cการจับคู่abccและabca(?>bc|b)cการจับคู่abccแต่มันไม่ตรงกับabc, เนื่องจากเครื่องยนต์ถูกห้ามไม่ให้ย้อนกลับและพยายามที่จะตั้งค่ากลุ่มb

9.ประเภท Unicode

มาตรฐาน Unicode จะตั้งชื่อคลาสอักขระนี่คือตัวอักษร 2 ตัวตัวอย่าง เช่นLuเ ป็ น เ รื่ อ ง เ ป็ น เ รื่ อ ง เ ป็ น เ รื่ อ งLlมันเป็นตัวอักษรตัวเล็กๆแ ล ะ เ ร า จ ะ ไ ด้ รั บ ก า ร เ ป็ น ก า รLตัวอักษรทั้งหมด

Unicode ประเภท
หมวดหมู่คําอธิบาย
L เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
ตัวอักษร
ลู เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
ตัวพิมพ์ใหญ่
Ll (แอลแอล)
ตัวอักษรพิมพ์เล็ก
ล ต เ ป็ น เ รื่ อ ง เ ห มื อ น เ ห มื อ น
ชื่อเรื่อง ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
ล ม เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
ตัวอักษรตัวปรับเปลี่ยน
โล
ตัวอักษรอื่น ๆ
เอ็ม
เครื่องหมาย
ล้านบาท
เครื่องหมายที่ไม่มีช่องว่าง
แม็ค
เครื่องหมายผสม
ฉัน
เครื่องหมายปิด
เ ห มื อ น เ ห มื อ น กั น
ตัวเลข
Nd (เอ็นดี)
ตัวเลขทศนิยม
Nl เ ห มื อ น เ ดิ น ท า ง
ตัวอักษร ตัวเลข
ไ ม่ มี ค ว า ม รั ก
ตัวเลขอื่นๆ
P เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
เครื่องหมายวรรคตอน
พีซี
เครื่องหมายวรรคตอนตัวเชื่อมต่อ
Pd เ ป็ น เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง
เครื่องหมายวรรคตอน
เ พ ร า ะ เ ป็ น เ พี ย ง
จุดเปิดประมูลราคา
เพ อ เ ป็ น เ รื่ อ ง เ ห มื อ น เ ห มื อ น
เครื่องหมายวรรคตอนแบบปิด
พี่ เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
เครื่องหมายวรรคตอนเริ่มต้น
Pf (พีเอฟ)
เครื่องหมายวรรคตอนท้าย
โป เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
เครื่องหมายวรรคตอนอื่นๆ
ส า ย เ ห มื อ น กั บ เ ร า
สัญลักษณ์
ส ม า ร ถ เ รี ย น เ รี ย น
สัญลักษณ์คณิตศาสตร์
Sc (เอส ซี)
สัญลักษณ์สกุลเงิน
Sk และ
สัญลักษณ์ของผู้ปรับเปลี่ยน
ดังนั้น
สัญลักษณ์อื่นๆ
Z (ซี)
ตัวคั่น
Zs และ
ตัวคั่นพื้นที่
Zl เป็นผลิตภัณฑ์ที่ได้รับการรับรองจาก
ตัวแบ่งบรรทัด
Zp คืออะไร
ตัวคั่นย่อหน้า
ค ว า ม รั ก ข อ ง เ ร า
อื่น ๆ
ค ว า ม รั ก
การควบคุม
Cf และ
รูปแบบ
ค ว า ม รั ก ข อ ง เ ร า
ตัวแทนจําหน่าย
ร่วม
การใช้งานส่วนตัว
Cn เป็นผลิตภัณฑ์ที่ได้รับการยอมรับจากทั่วโลก
ไ ม่ ไ ด้ รั บ ก า ร เ ป็ น ก า ร

อักขระเมตา\pอักขระ Unicode หนึ่งตัวที่แสดงถึงคลาสที่ระบุไวยกรณ์\pLและ\p{L}สําหรับชื่อตัวอักษร 1,\p{Lu}สําหรับชื่อ 2 ตัวอักษร

อักขระเมตา\Pเป็นแบบย้อนกลับ ซึ่งแสดงถึงอักขระ Unicode ที่ไม่ได้อยู่ในหมวดหมู่ที่ระบุ

เมตาอักขระเหล่านี้ยังได้รับการสนับสนุนในคลาสอักขระ

10.ตัวปรับเปลี่ยน

ไวยากรณ์ของตัวปรับเปลี่ยนเดี่ยว:(?i)หมายถึง เปิด ,(?-i)หมายถึง ปิดอนุญาตให้มีการปรับเปลี่ยนได้หลายแบบ เช่น:(?msgxr-imsgxr)

ตัวแก้ไขจะใช้เพื่อเปลี่ยนพฤติกรรมของนิพจน์ปกติตัวปรับแต่งจะมีผลเฉพาะกับ(?imsgxr-imsgxr)ส่วนของนิพจน์ปกติ หลังจากตัวดําเนินการ

ตัวปรับเปลี่ยนใด ๆ เหล่านี้สามารถฝังอยู่ในการแสดงออกปกติได้ถ้าตัวปรับเปลี่ยนเป็นแบบอินไลน์ในนิพจน์ย่อย มันจะส่งผลต่อนิพจน์ย่อยนั้นเท่านั้น

i เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
ดำเนินการจับคู่รูปแบบโดยไม่คำนึงถึงตัวพิมพ์ใหญ่-เล็ก (ใช้การตั้งค่าภูมิภาคที่ติดตั้งในระบบ)ปิดโดยค่าปริยาย
ม า เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
คิดว่าสตริงเป็นหลายบรรทัดนั่นคือ จะ^และ$เปลี่ยน จาก จุดเริ่มต้น หรือ จุดสิ้นสุด ของ สตริง ที่ ตรงกัน เท่านั้น เป็น จุดเริ่มต้น หรือ จุดสิ้นสุด ของ บรรทัด ใด ๆ ภายใน สตริง ที่ ตรงกัน โปรด ดู ที่ตัว แบ่ง บรรทัด。ปิดโดยค่าปริยาย
s เ พื่ อ น เ ห มื อ น กั บ เ ร า
คิดว่าสตริงเป็นบรรทัดเดียวนั่นคือ จะ.เปลี่ยนให้ตรงกับตัวอักษรใด ๆ แม้ตัวคั่นบรรทัด (ดูเพิ่มเติมตัวแบ่งบรรทัด) และมันมักจะไม่ตรงกันเปิดเป็นค่าปริยาย
g เ พื่ อ น เ ห มื อ น กั บ เ ร า
ไม่ใช่ตัวปรับเปลี่ยนมาตรฐานการปิดจะสลับตัวดําเนินการที่ตามมาทั้งหมดไปยังโหมดที่ไม่โลภ (ตัวปรับเปลี่ยนนี้จะเปิดขึ้นตามค่าเริ่มต้น)ดังนั้น ถ้าตัวปรับเปลี่ยนgปิด แล้ว+วิธีการทํางานคือ+?*วิธีการทํางานคือ*?รอ รอ
x เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
ขยายความสามารถในการอ่านโหมดโดยการอนุญาตให้มีช่องว่างและความคิดเห็น (ดูคำอธิบายด้านล่าง)ปิดโดยค่าปริยาย
r เ พื่ อ น เ ห มื อ น กั บ เ ร า
ไม่ใช่ตัวปรับเปลี่ยนมาตรฐานถ้าตั้งค่าแล้วช่วงа-яพิเศษรวมถึงตัวอักษรรัสเซียёА-Яเพิ่มเติม รวมถึ ง การจั ด การให้ เ กิ ด ขึ้ นЁа-Яรวมถึงตัวอักษรรัสเซียทั้งหมดด้วยเปิดเป็นค่าปริยาย
#
(?#ข้อความ): หมายเหตุ,textถูกละเลยโปรดทราบว่า RegExpr กําลังมองหา)เมื่อปิดความคิดเห็นดังนั้นจึงไม่สามารถใส่ตัวอักษรในความคิดเห็นได้)

นี่คือตัวอย่าง:

ตัวอย่างของส่วนขยาย Perl
สํานวนผลลัพธ์ที่ได้
(? 1) แซง-ปีเตอร์สเบิร์ก
การจับคู่Saint-petersburgและSaint-Petersburg
(? i) เซนท์ - (?- (i) ปีเตอร์สเบิร์ก
การจับคู่Saint-Petersburgแต่มันไม่ตรงกับSaint-petersburg
(? i) (นักบุญ -)?ปีเตอร์สเบิร์ก
การจับคู่Saint-petersburgและsaint-petersburg
((? i) เซนต์ -)?ปีเตอร์สเบิร์ก
การจับคู่saint-Petersburgแต่มันไม่ตรงกันsaint-petersburg

ตัวปรับแต่งxมันต้องมีคําอธิบายมากกว่านี้

มันบอกให้ละเว้นช่องว่างที่ไม่มีเครื่องหมายแบ็คสแลชหรือในคลาสอักขระ

คุณสามารถใช้มันเพื่อแบ่งนิพจน์ปกติออกเป็นส่วนที่อ่านได้มากขึ้น (เล็กน้อย)

#อักขระยังถือว่าเป็นอักขระเมตาที่แนะนําความคิดเห็นเช่น:

(
  (abc) # 注释1
    |   # 您可以使用空格来格式化正则表达式 - TRegExpr会忽略它
  (efg) # 注释2
)

นั่นก็หมายความว่า ถ้าคุณต้องการใช้พื้นที่จริงๆ ในโหมด หรือ#อักขระ (นอกคลาสอักขระ อักขระเหล่านี้จะไม่ได้รับผลกระทบจากx) คุณต้องหนีพวกเขาหรือเข้ารหัสพวกเขาด้วยการหลบหนีแปดหรือสิบหก

โดยรวมแล้วคุณสมบัติเหล่านี้ช่วยเพิ่มความสามารถในการอ่านข้อความนิพจน์ปกติได้อย่างมาก


有效的HTML 4.0过渡 CSS有效!