ผู้บัญชาการ คู่ ใช้ ห้องสมุด ฟรี ที่ เขียน โดย Andrey Sorokin TRegExpr เป็น ผลิตภัณฑ์ ที่ ได้รับ การ ออกแบบ มา เพื่อ ตอบ สนองความต้องการ ของ ลูกค้า。
คําอธิบายส่วนใหญ่มาจากไฟล์ช่วยเหลือของห้องสมุด
นิพจน์ปกติเป็นวิธีการที่ใช้กันอย่างแพร่หลายในการระบุรูปแบบการค้นหาข้อความอักขระพิเศษ (อักขระเมตา) ช่วยให้เราสามารถระบุตัวอย่างเช่นสตริงเฉพาะที่เรากําลังมองหาปรากฏที่จุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดหรือที่มีอักขระหรือกลุ่มของอักขระเ ห มื อ น เ ห มื อ น กั นการปรากฏตัวครั้งที่สอง
ผู้บัญชาการคู่สนับสนุนการแสดงออกปกติในคุณสมบัติต่อไปนี้:
ไลบรารี TRegExp รองรับโหมดการทำงาน 2 โหมด คือ ANSI และ Unicodeเมื่อค้นหาในไฟล์ข้อความ Double Commander จะใช้ทั้งสองอย่าง (ขึ้นอยู่กับการเข้ารหัสไฟล์)เมื่อค้นหาด้วยชื่อ ให้ใช้ Unicode
อักขระแต่ละตัวจะตรงกับตัวเองเว้นแต่จะเป็นเมตาอักขระที่มีความหมายพิเศษที่อธิบายไว้ด้านล่าง
ชุดของตัวอักษรตรงกับชุดของตัวอักษรในสตริงเป้าหมายดังนั้นรูปแบบbluhจะ ตรง กับ ค่า ที่ มี อยู่ ใน สตริง เป้าหมายbluh。
เราสามารถสร้าง ได้โดยการสร้าง ใน หรือหนี ลําดับนําหน้าด้วย สแลช\เพื่อให้สามารถอธิบายได้ด้วยคําพูด เช่น เมตาอักขระ^ตรงกับจุดเริ่มต้นของสตริง แต่\^ตัวละครที่ตรงกัน^,\\การจับคู่\รอ รอ
นี่คือตัวอย่าง:
| ตัวอย่างการจับคู่อย่างง่าย | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
foobar และ |
ตรงกับสตริงfoobar |
FooBarPtr - เ พื่ อ น เ ห มื อ น กั น |
การจับคู่^FooBarPtr |
คุณสามารถระบุอักขระโดยใช้ไวยากรณ์ลำดับการหลบหนีคล้ายกับที่ใช้ใน 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 |
คุณสามารถใส่รายการตัวอักษรลงใน[]ระบุคลาสอักขระซึ่งจะตรงกับใด ๆ ในรายการหนึ่ง ... ตัวอักษร
ถ้ า เ ป็ น เ รื่ อ ง เ ห มื อ น กั น[แ ล ะ เ ร า จ ะ ไ ด้ รั บ ก า ร เ ป็ นผู้ ศ รั ท ธ า^, แล้ว ใน รายการ ที่ ตรง กัน ของ คลาส นี้ไ ม่ เ ป็ น เ ธ อตัวอักษรใด ๆ ที่มีอยู่
ใ น ก า ร เ รี ย น เ รี ย น-ตัวอักษรที่ใช้ในการระบุเรนจ์, ดังนั้นa-zหมายถึง จากaไปที่zของตัวละครทั้งหมด รวมอยู่ด้วย
หากคุณต้องการ-เป็นสมาชิกของชั้นเรียนของคุณเองวางไว้ที่จุดเริ่มต้นหรือจุดสิ้นสุดของรายการหรือหลบหนีด้วย
หากคุณต้องการที่จะใช้]คุณสามารถวางไว้ที่จุดเริ่มต้นของรายการหรือหลบหนีด้วย
| คลาสตัวละคร | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
[- az] |
การจับคู่a、zและ- |
[ az- ] |
การจับคู่a、zและ- |
[a\-z] เ พื่ อ น เ ห มื อ น กั น |
การจับคู่a、zและ- |
[a-z] เ พื่ อ น เ ห มื อ น กั น |
จับคู่จากaไปที่zของตัวอักษรตัวเล็กทั้ง 26 ตัว |
[\n-\x0D] เ พื่ อ น เ ห มื อ น กั น |
ตรงกับใด ๆ\x10、\x11、\x12、\x13 |
[\ ] |
ตรงกับตัวเลขใด ๆ-หรื อt |
[ ] - a ] |
จับคู่จาก]ไปที่aของตัวละครใด ๆ |
นี่คือตัวอย่าง:
| ตัวอย่างคลาสตัวอักษร | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
foob [aeiou] r |
ค้นหาสายอักขระfoobar、fooberฯลฯ แต่ไม่รวมถึงfoobbr、foobcrรอ รอ |
foob [^aeiou]r |
ค้นหาสายอักขระfoobbr、foobcrฯลฯ แต่ไม่รวมถึงfoobar、fooberรอ รอ |
เมตาอักขระเป็นแก่นแท้ของการแสดงออกปกติและอักขระพิเศษ
มีประเภท ที่แตกต่างกันตามที่อธิบายไว้ด้านล่าง
นิพจน์บางตัวช่วยในการตรวจจับการแยกแถว
| ตัวแบ่งบรรทัด | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
^ |
หัวแถว |
$ |
สิ้นสุดแถว |
\ ก า ร เ ป็ น ก า ร เ รี ย น |
จุดเริ่มต้นของข้อความ |
\ Z เ ป็ น เ รื่ อ ง เ ห มื อ น กั น |
ท้ายข้อความ |
. |
อักขระใด ๆ ในบรรทัด |
นี่คือตัวอย่าง:
| ตัวอย่างการแบ่งบรรทัด | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
^ foobar (ฟูบาร์) |
เฉพาะเมื่อสตริงfoobarตรงกับที่หัวแถว |
foobar $ เ พื่ อ น เ ห มื อ น กั บ เ ร า |
เฉพาะเมื่อสตริงfoobarจับคู่เมื่อสิ้นสุดแถว |
^foobar $ |
เฉพาะเมื่อสตริงfoobarตรงกับเมื่อเป็นสตริงที่ไม่ซ้ํากันในบรรทัด |
foob.r - เ ธ อ เ ป็ น เ ธ อ |
ตรงกับภาพfoobar、foobbr、foob1rสตริงที่เท่าเทียมกัน |
โดยค่าเริ่มต้น^อักขระเมตารับประกันว่าจะตรงกับจุดเริ่มต้นของสตริง / ข้อความที่ป้อนเท่านั้น$ตัวอักษรเมตาจะตรงกันในตอนท้ายเท่านั้นตัวคั่นแถวที่ฝังอยู่จะไม่ถูกฝัง^หรือ$มันตรงกัน
อย่างไรก็ตามคุณอาจต้องการคิดว่าสตริงเป็นบัฟเฟอร์หลายบรรทัดดังนั้น^จะถูกจับคู่หลังจากตัวคั่นบรรทัดใด ๆ ภายในสตริง$จะถูกจับคู่ก่อนตัวแบ่งบรรทัดใด ๆคุณสามารถทําได้โดยการเปิดตัวปรับแต่ง m เพื่อทําให้สําเร็จ
\Aและ\Zเช่น^และ$เหมือนกัน แต่เมื่อใช้ตัวปรับแต่ง m เมื่อพวกเขาไม่ได้จับคู่กันหลายครั้งและ^และ$มันจะถูกจับคู่ที่ตัวคั่นแถวภายในแต่ละตัว
โดยค่าเริ่มต้น.อักขระ ตรงกับอักขระใด ๆ แต่ถ้าปิดตัวปรับแต่ง s แล้ว.ตัวแบ่งบรรทัดที่ฝังอยู่จะไม่ตรงกัน
RegExpr เป็นไปตามมาตรฐานทางเทคนิคของยูนิโคด (มาตรฐานทางเทคนิค # 18) ตัวคั่นแถวการประมวลผล:
^ที่จุดเริ่มต้นของสตริงการป้อนข้อมูลและถ้าตัวปรับแต่ง m เปิด ก็ เ ป็ น ที่ เ ห มื อ น\x0D\x0Aหรื อ\x0Aหรื อ\x0Dหลังจากการเกิดขึ้นของ Unicode ใด ๆ (สนับสนุน:\x2028หรื อ\x2029หรือ\x0Bหรือ\x0Cหรื อ\x85)。โปรดทราบว่าในช่วง\x0D\x0Aไม่มีบรรทัดว่างในลําดับ
$ในตอนท้ายของสตริงการป้อนข้อมูลและถ้าคุณตัวปรับแต่ง m เปิด ก็ เ ป็ น ที่ เ ห มื อ น\x0D\x0Aหรื อ\x0Aหรือ\x0Dก่อน (สนับสนุน Unicode:\x2028หรือ\x2029หรื อ\x0Bหรื อ\x0Cหรือ\x85)。โปรดทราบว่าในช่วง\x0D\x0Aไม่มีบรรทัดว่างในลําดับ
.ตรงกับอักขระใด ๆ แต่ถ้าปิดตัวปรับแต่ง s แล้ว.ไ ม่ ไ ด้ เ ห็ น เ ห มื อ น กั น\x0D\x0Aและ\x0Aและ\x0D(รองรับ Unicode:\x2028และ\x2029และ\x0Bและ\x0Cและ\x85)。
ขอ ทราบ ด้วย นะ ครับ ว่า^.*$(โหมดบรรทัดว่าง) จะไม่แสดงใน\x0D\x0Aตรงกับสตริงที่ว่างเปล่าในลําดับ แต่จะอยู่ใน\x0A\x0Dตรงกับสตริงที่ว่างเปล่าในลําดับ
นิพจน์บางตัวช่วยในการตรวจหากลุ่มตัวอักษร
| คลาสที่กําหนดไว้ล่วงหน้า | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
\ w เ ห มื อ น กั น เ ห มื อ น กั น |
ตัวอักษรและตัวเลข (รวม_), นั่นคือ[0-9A-Za-z_] |
\ W เ ป็ น เ รื่ อ ง เ ห มื อ น กั น |
อักขระที่ไม่ใช่ตัวอักษรและตัวเลข |
\d เ ป็ น เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง |
ตัวอักษรตัวเลข |
\\D เ ป็ น เ รื่ อ ง เ ห มื อ น กั น |
ตัวอักษรที่ไม่ใช่ตัวเลข |
\ s เ ป็ น เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง |
อักขระช่องว่างใด ๆ (และ[ \t\n\r\f]เ ป็ น เ รื่ อ ง เ ห มื อ น กั น เ ห มื อ น กั น |
\ S เ ป็ น เ รื่ อ ง เ รื่ อ ง เ รื่ อ ง |
อักขระที่ไม่ใช่ช่องว่าง |
คุณสามารถปรับแต่งได้ในคลาสตัวละครใช้ในการ\w、\dและ\s。
นี่คือตัวอย่าง:
| ตัวอย่างของคลาสที่กําหนดไว้ล่วงหน้า | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
ดร. ฟูบ |
ตรงกับภาพfoob1r、foob6rสายรอ แต่ไม่รวมfoobar、foobbrรอ รอ |
foob [\ w \ s ] r |
ตรงกับภาพfoobar、foob r、foobbrสายรอ แต่ไม่รวมfoob=rรอ รอ |
ขอบเขตของคํา (\b) คือ ด้านหนึ่งของมัน\wแ ล ะ เ ร า ไ ด้ รั บ ก า ร\Wตําแหน่งระหว่างอักขระสองตัว (ในลําดับใด ๆ) นับอักขระสมมติฐานที่จุดเริ่มต้นและจุดสิ้นสุดของสตริงให้ตรงกัน\W。
| ขอบเขตคํา | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
เ พื่ อ น เ ห มื อ น กั บ เ ร า |
ขอบเขตของคําที่ตรงกัน |
\B เ พื่ อ น เ ห มื อ น กั น |
การจับคู่ขอบเขตที่ไม่ใช่คํา |
รายการใด ๆ ของนิพจน์ปกติสามารถทําตาม ชนิดอื่น –อิ ท ร อ ร์ เ ป็ น เ รื่ อ ง เ ห มื อ น กั น
ด้วยเมตาเหล่านี้ คุณสามารถระบุจำนวนครั้งที่อักขระก่อนหน้านี้ เมตา หรือนิพจน์ย่อยจะปรากฏขึ้น
| อิ ท ร า ย เ ป็ น เ รื่ อ ง เ ห มื อ น เ ห มื อ น | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
* |
ศูนย์ครั้งหรือมากกว่า ("โลภ") คล้ายกับ{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 เ พื่ อ น เ ห มื อ น กั บ เ ร า |
ตรงกับภาพfoobar、foobalkjdflkj9rและfoobrสตริงที่เท่าเทียมกัน |
foob. + เ พื่ อ น เ ห มื อ น กั นr เ พื่ อ น เ ห มื อ น กั บ เ ร า |
ตรงกับภาพfoobar、foobalkjdflkj9rสตริงที่เท่ากัน แต่ไม่รวมfoobr |
foob. ? r เ พื่ อ น เ ห มื อ น กั บ เ ร า |
ตรงกับภาพfoobar、foobbrและfoobrสตริงที่เท่ากัน แต่ไม่รวมfoobalkj9r |
fooba {2} R |
ตรงกับสตริงfoobaar |
หน้าหลัก / |
ตรงกับภาพfoobaar、foobaaar、foobaaaarสตริงที่เท่ากัน |
{2,3} r |
ตรงกับภาพfoobaarหรือfoobaaarสตริงที่เท่ากัน แต่ไม่รวมfoobaaaar |
คําอธิบายเล็กน้อยเกี่ยวกับ "ความโลภ"
"โลภ" เอามากที่สุด "ไม่โลภ" เอาน้อยที่สุด
ตัวอย่างเช่นb+และb*นําไปใช้กับabbbbcกลับไปbbbb,b+?กลับb,b*?กลับสตริงว่าง,b{2,3}?กลับไปbb,b{2,3}กลับbbb。
คุณ สามารถ สลับ ทั้งหมด ไป ยัง โหมด ' ไม่ โลภ ' (ดูตัว ปรับ แต่ง g)。
คุณสามารถใช้|แยกชุดของทางเลือกอื่นเพื่อระบุรูปแบบ ดังนั้นfee|fie|foeจะ ตรง กับ ค่า ที่ มี อยู่ ใน สตริง เป้าหมายfee、fieหรื อfoe(f(e|i|o)eเช่นเดียวกับ)
ทางเลือกแรกประกอบด้วยตัวคั่นรูปแบบจากตัวคั่นรูปแบบก่อนหน้า ((、[หรือจุดเริ่มต้นของรูปแบบ) ไปยังครั้งแรก|ของเนื้อหาทั้งหมดที่มีอยู่ในทางเลือกสุดท้ายจากสุดท้าย|ไปยังตัวแบ่งรูปแบบถัดไป
ดังนั้นจึงเป็นเรื่องปกติที่จะรวมทางเลือกไว้ในวงเล็บเพื่อลดความสับสนเกี่ยวกับตําแหน่งเริ่มต้นและสิ้นสุดของพวกเขา
การทดแทนจะถูกพยายามจากซ้ายไปขวาดังนั้นการทดแทนครั้งแรกที่พบเพื่อให้ตรงกับการแสดงออกทั้งหมดจะถูกเลือก
ซึ่งหมายความว่า ทางเลือกไม่จําเป็นต้องโลภ
ตัวอย่าง: เมื่อใช้foo|footการจับคู่barefootเวลาเท่านั้นfooบางส่วนจะตรงกับเนื่องจากเป็นทางเลือกแรกที่พยายามและประสบความสําเร็จในการจับคู่สตริงเป้าหมาย(อาจไม่สำคัญเมื่อเราใช้วงเล็บเพื่อจับภาพข้อความที่ตรงกัน)
แ ล ะ จ ง จํา ไ ด้ ว่ า|ภายในวงเล็บสี่เหลี่ยมจะถูกตีความว่าเป็นตัวอักษรดังนั้นหากคุณเขียน[fee|fie|foe], จริงๆ แล้ว มันตรงกันเท่านั้น[feio|]。
ตัวอย่าง เช่น
| ตัวอย่าง การ ใช้ งาน แทน งาน ที่ มี ความ เป็น ไป | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
foo (บาร์| foo) และ |
ตรงกับสตริงfoobarหรื อfoofoo |
การก่อสร้างวงเล็บ( ... )นอกจากนี้ยังสามารถใช้เพื่อกําหนดนิพจน์ย่อยของนิพจน์ปกติ
เมื่อคุณค้นหาแล้ว คุณสามารถเรียกนิพจน์ย่อยใดๆ ก็ได้ และคุณยังสามารถใช้นิพจน์ย่อยเป็นมาสก์ได้อีกด้วย
นิพจน์ย่อยจะถูกกำหนดหมายเลขตามลำดับของวงเล็บซ้ายไปขวา
นิพจน์ย่อยตัวแรกมีหมายเลข 1 และรองรับนิพจน์ย่อยได้สูงสุด 90 นิพจน์ (นิพจน์ปกติทั้งหมดตรงกับหมายเลข 0 – คุณสามารถแทนที่ได้ด้วย$0หรือ$&)。
นี่คือตัวอย่างบางส่วน:
| การแสดงออกของเด็ก | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
(foobar) { 8,10 } |
การแข่งขันประกอบด้วย 8, 9 หรือ 10foobarส า ร เ รี ย น ส า ร ณ์ ข อ ง เ ร า |
foob ([0-9] - เ ห มื อ น กั บ เ ร า| a+) r เ พื่ อ น เ ห มื อ น กั น |
การจับคู่foob0r、foob1r、foobar、foobaar、foobaarรอ รอ |
หมายเหตุเกี่ยวกับแม่แบบ "แทนที่ด้วย":
$หรือ\ใช้คํานําหน้า\。1\$ is $2\\rub\\จะ เ ป็ น การ เ รี ย น กลับ มา1$ is <subexpr2>\rub\。$nหลังจากวางตัวเลขเดิมแล้วคุณจะต้องจัดฟัน{}จะเป็นnมารวมกันa$12bcจะ เ ป็ น การ เ รี ย น กลับ มาa<subexpr12>bcแ ต่ เ ร า จ ะ ไ ด้ รั บ ค ว า ม รั กa${1}2bcจะ เ ป็ น การ เ รี ย น กลับ มาa<subexpr1>2bc。ตัวอย่าง เช่น
ขอ ให้ เ ป็ น วั น ที่ เ ป็ น21.01.2018คว่ําเป็น2018.01.21:
ค้นหา:(\d{2})\.(\d{2})\.(\d{4})
แทนที่ด้วย:$3.$2.$1
อักขระเมตา\1ไปที่\9ถูกตีความว่าเป็นการอ้างอิงย้อนกลับ\nตรงกับนิพจน์ย่อยที่ตรงกันก่อนหน้านี้n。
นี่คือตัวอย่างบางส่วน:
| ตัวอย่างการอ้างอิงย้อนกลับ | |
|---|---|
| สํานวน | ผลลัพธ์ที่ได้ |
(.)\ 1 + |
การจับคู่aaaaและcc |
(.+)\ 1 + |
ก็ เ ป็ น ที่ เ ป็ นababและ123123 |
(['"]?) (\d+) \1 - เ ธ อ เ ป็ น เ ธ อ |
การจับคู่"13"(ในเครื่องหมายคําพูดคู่),'4'(ในเครื่องหมายคําพูดเดียว) หรือ77(ไม่มีเครื่องหมายใบเสนอราคา) เป็นต้น |
การยืนยันในเชิงบวก:foo(?=bar)เฉพาะในbarก่อนหน้า ตรงกันfooและbarไม่รวมอยู่ในการจับคู่
การยืนยันการมองไปข้างหน้าในเชิงลบ:foo(?!bar)- รูปถ่ายของ โรงแรมเดอ จาเนโร -barการจับคู่เวลาfoo。
การยืนยันในเชิงบวก:(?<=foo)barเฉพาะในfooหลังจากนั้น จับคู่barและfooไม่รวมอยู่ในการจับคู่
การยืนยันการมองย้อนกลับเชิงลบ:(?<!foo)barไม่มีอะไรอยู่ข้างหน้าเลยfooตรงกับเมื่อมีคำนำหน้าbar。
ข้อ จํากัด:
วงเล็บที่มองไปข้างหน้าจะต้องอยู่ในตอนท้ายของการแสดงออกและวงเล็บที่มองย้อนกลับจะต้องอยู่ที่จุดเริ่มต้นของการแสดงออกดังนั้นจึงไม่มีการสนับสนุนในการเลือก|ยืนยันระหว่างหรือภายในกลุ่ม
สํา หรั บ พว ก เ ข า จ ะ ไ ด้ รั บ(?<!foo)bar, การแสดงออกปกติfooต้องมีความยาวคงที่เช่นมีเฉพาะการดําเนินงานที่มีการจับคู่ความยาวคงที่ไม่อนุญาตให้ใช้ตัวจําแนกประเภท ยกเว้นมีตัวเลขที่ซ้ํากัน{n}หรื อ{n,n}ของวงเล็บคลาสตัวอักษรได้รับอนุญาตที่นี่จุดได้รับอนุญาตใช้\bและ\B。ไม่อนุญาตให้ใช้กลุ่มและตัวเลือก
สําหรับการยืนยันอีกสามประเภทนิพจน์ในวงเล็บอาจมีความซับซ้อนโดยพลการ
ไวยกรณ์(?: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 |
ไวยกรณ์(?>expr|expr|...)。
กลุ่มอะตอมเป็นกรณีพิเศษของกลุ่มที่ไม่ได้จับภาพ: หากพบส่วนหนึ่งของรูปแบบการจัดกลุ่มดังกล่าวจะปิดการใช้งานการสํารองข้อมูลของกลุ่มวงเล็บกลุ่มอะตอมทำงานได้เร็วขึ้นและมีประโยชน์ในการเพิ่มประสิทธิภาพกลุ่มที่มีนิพจน์ที่แตกต่างกันมากมาย
ตัวอย่างเช่นa(bc|b)cการจับคู่abccและabc,a(?>bc|b)cการจับคู่abccแต่มันไม่ตรงกับabc, เนื่องจากเครื่องยนต์ถูกห้ามไม่ให้ย้อนกลับและพยายามที่จะตั้งค่ากลุ่มb。
มาตรฐาน 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 ที่ไม่ได้อยู่ในหมวดหมู่ที่ระบุ
เมตาอักขระเหล่านี้ยังได้รับการสนับสนุนในคลาสอักขระ
ไวยากรณ์ของตัวปรับเปลี่ยนเดี่ยว:(?i)หมายถึง เปิด ,(?-i)หมายถึง ปิดอนุญาตให้มีการปรับเปลี่ยนได้หลายแบบ เช่น:(?msgxr-imsgxr)。
ตัวแก้ไขจะใช้เพื่อเปลี่ยนพฤติกรรมของนิพจน์ปกติตัวปรับแต่งจะมีผลเฉพาะกับ(?imsgxr-imsgxr)ส่วนของนิพจน์ปกติ หลังจากตัวดําเนินการ
ตัวปรับเปลี่ยนใด ๆ เหล่านี้สามารถฝังอยู่ในการแสดงออกปกติได้ถ้าตัวปรับเปลี่ยนเป็นแบบอินไลน์ในนิพจน์ย่อย มันจะส่งผลต่อนิพจน์ย่อยนั้นเท่านั้น
^และ$เปลี่ยน จาก จุดเริ่มต้น หรือ จุดสิ้นสุด ของ สตริง ที่ ตรงกัน เท่านั้น เป็น จุดเริ่มต้น หรือ จุดสิ้นสุด ของ บรรทัด ใด ๆ ภายใน สตริง ที่ ตรงกัน โปรด ดู ที่ตัว แบ่ง บรรทัด。ปิดโดยค่าปริยาย.เปลี่ยนให้ตรงกับตัวอักษรใด ๆ แม้ตัวคั่นบรรทัด (ดูเพิ่มเติมตัวแบ่งบรรทัด) และมันมักจะไม่ตรงกันเปิดเป็นค่าปริยายgปิด แล้ว+วิธีการทํางานคือ+?,*วิธีการทํางานคือ*?รอ รอа-яพิเศษรวมถึงตัวอักษรรัสเซียё,А-Яเพิ่มเติม รวมถึ ง การจั ด การให้ เ กิ ด ขึ้ นЁ,а-Яรวมถึงตัวอักษรรัสเซียทั้งหมดด้วยเปิดเป็นค่าปริยาย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) คุณต้องหนีพวกเขาหรือเข้ารหัสพวกเขาด้วยการหลบหนีแปดหรือสิบหก
โดยรวมแล้วคุณสมบัติเหล่านี้ช่วยเพิ่มความสามารถในการอ่านข้อความนิพจน์ปกติได้อย่างมาก