การเปรียบเทียบเครื่องมือประมวลผลนิพจน์ปกติ
นี่คือการเปรียบเทียบเครื่องมือประมวลผลนิพจน์ปกติ (Regular Expression Engines )
ห้องสมุด
| ชื่อ | เว็บไซต์อย่างเป็นทางการ | ภาษาโปรแกรม | ใบอนุญาตซอฟต์แวร์ | ใช้โดย |
|---|---|---|---|---|
| Boost .Regex [หมายเหตุ 1 ] | ไลบรารี Boost C++ | ซี++ | บูสต์ | Notepad++ เวอร์ชัน 6.0.0 ขึ้นไป, EmEditor |
| บูสต์เอ็กซ์เพรสซีฟ | ไลบรารี Boost C++ | ซี++ | บูสต์ | |
| ดีลซ์ | เรกเอ็กซ์แล็บ | ซี++ | กรรมสิทธิ์ | |
| FREJ [หมายเหตุ 2 ] | นิพจน์ปกติแบบฟัซซีสำหรับ Java | ชวา | แอลจีพีแอล | |
| GLib /GRegex [หมายเหตุ 3 ] | คู่มืออ้างอิง GLib | ซี | แอลจีพีแอล | |
| จีเอ็นยู | คู่มืออ้างอิง Gnulib | ซี | แอลจีพีแอล | ไลบรารี GNU libc , โปรแกรม GNU |
| เกรตา | การวิจัยของไมโครซอฟต์ | ซี++ | กรรมสิทธิ์ | |
| เกรเก็กซ์ | บริษัท โกรฟ อิงค์ | อาร์ทีแอล, เอชแอลเอส | กรรมสิทธิ์ | เอ็นจิ้นประมวลผลนิพจน์ปกติ (regex) ความเร็วมากกว่า 100 Gbit/s ที่เร่งความเร็วด้วย FPGA สำหรับอุตสาหกรรมความปลอดภัยทางไซเบอร์ การเงิน และอีคอมเมิร์ซ |
| ไฮเปอร์สแกน | อินเทล | C, การประกอบเฉพาะ x86 ( SSSE3 + [ 1 ] ) | BSD 3 ข้อ | อาร์สปามด์ |
| ไอซียู | ส่วนประกอบสากลสำหรับยูนิโค้ด | C, C++ [หมายเหตุ 4 ] | ไอซียู | พื้นฐาน (เวอร์ชันโอเพนซอร์สของ Apple และ Swift) |
| ข้อผิดพลาด | ข้อผิดพลาด | ซี++ | BSD 3 ข้อ | Chrome , Firefox , Node.js |
| จาการ์ตาเรเอ็กซ์พี | โครงการ Apache Jakarta | ชวา | อะปาเช่ | |
| java.util.regex | คู่มือผู้ใช้ Java | ชวา | ลิขสิทธิ์ GNU GPLv2 พร้อมข้อยกเว้น Classpath | เจเอดิท |
| เจ.รีเจ็กซ์ | เจ.รีเจ็กซ์ | ชวา | บีเอสดี | |
| MATLAB | นิพจน์ปกติ | ภาษา MATLAB | กรรมสิทธิ์ | |
| โอนิกุรุมะ | โคซาโกะ | ซี | บีเอสดี | Atom , Take Command Console , Tera Term , TextMate , Sublime Text , SubEthaEdit , EmEditor , jq , Ruby |
| เกม Oniguruma เวอร์ชัน Java | โจนี่ | ชวา | เอ็มไอที | JRuby , Nashorn (เอ็นจิ้นจาวาสคริปต์) |
| แพททู | สตีฟซอฟต์ | Java (ใช้งานได้กับ Java 1.0) | แอลจีพีแอล | |
| พีซีอาร์ | pcre.org | C, C++ [หมายเหตุ 5 ] | บีเอสดี | Apache HTTP Server , Nginx , BBEdit , Edbrowse , Julia , HHVM , Notepad++ < 6.0.0, PHP , Delphi , R , Exim , SWI-Prolog , Elixir , Erlang |
| Qt /QRegExp | Digia เก็บถาวรไว้เมื่อวันที่ 12 ธันวาคม 2013 ที่Wayback Machine | ซี++ | Qt GNU GPL เวอร์ชัน 3.0 Qt GNU LGPL v. 2.1 , Qt เชิงพาณิชย์ | เคท , ไคล์ |
| regex - ไลบรารีนิพจน์ปกติของเฮนรี สเปนเซอร์ | อาร์กิวเมนต์ลิสต์ | ซี | บีเอสดี | |
| RE2 | RE2 | ซี++ | บีเอสดี | Go , Google Sheets, Gmail, G Suite |
| รีเจ็กซ์+ | slevithan/regex บน GitHub | สคริปต์ | เอ็มไอที | |
| นิพจน์ปกติขั้นสูงของเฮนรี สเปนเซอร์ | ทีซีแอล | ซี | บีเอสดี | |
| อาร์จีเอ็กซ์ | อาร์จีเอ็กซ์ | ไลบรารีคอมโพเนนต์ที่ใช้ภาษา C++ | พี6อาร์ | |
| อาร์ซีพี | ไททัน ไอซี | อาร์ทีแอล | กรรมสิทธิ์ | การเร่งความเร็วการค้นหาด้วยฮาร์ดแวร์โดยใช้ RegEx พร้อมใช้งานสำหรับ ASIC, FPGA และคลาวด์ ช่วยให้ประมวลผลเนื้อหาแบบขนานจำนวนมากด้วยความเร็วสูงเป็นพิเศษ |
| ซับเรก | แมตต์ บัคนอลล์ | ซี | เอ็มไอที | |
| ทีเพอร์ลเรกูเลทเอ็กซ์ | คอมโพเนนต์ TPerlRegEx VCL | ออบเจ็กต์ปาสคาล | MPLv1.1 | |
| TRE [หมายเหตุ 2 ] | วิลล์ ลอริคารี | ซี | บีเอสดี | มัสล์ |
| เทรเก็กซ์ | เทรเก็กซ์ | ชวา | ยูพีแอล-1.0 | กราอัลวีเอ็ม |
| เทรกเอ็กซ์พร | เอกสารประกอบการใช้งาน TRegExpr ( RegExp Studio ) | ออบเจ็กต์ปาสคาล | ใบอนุญาตสองแบบ: ซอฟต์แวร์ฟรีหรือ LGPL พร้อมข้อยกเว้นสำหรับการเชื่อมโยงแบบคงที่ | ผู้บัญชาการทั้งหมด |
| ภาษา Wolfram ( Mathematica ) | ศูนย์เอกสารภาษา Wolfram | ภาษาวูลฟรัม | กรรมสิทธิ์ | Mathematicaแพลตฟอร์มการพัฒนาของ Wolfram |
| XRegExp | XRegExp | สคริปต์ | เอ็มไอที | |
| ยาร์ | ยาร์ | ซี++ | BSD 2 ข้อ | Safari , เบราว์เซอร์ที่ใช้ WebKit , QML |
ภาษา
| ภาษา | เว็บไซต์อย่างเป็นทางการ | ใบอนุญาตซอฟต์แวร์ | หมายเหตุ |
|---|---|---|---|
| แอ็กชันสคริปต์ 3 | ศูนย์เทคโนโลยีแอคชั่นสคริปต์ | ฟรี | |
| APL (APLX, Dyalog, GNU) | เอพีแอล วิกิ | ได้รับอนุญาตจากการใช้งานที่เกี่ยวข้อง | ⎕SS(PCRE), ⎕R/ ⎕S(PCRE), ⎕SS(PCRE2) ตามลำดับ |
| C++11 ( C++ ) | เว็บไซต์มาตรฐาน C++ | ได้รับอนุญาตจากการใช้งานที่เกี่ยวข้อง | ตั้งแต่ ISO14822:2011(e) คล้ายกับ ECMAScript ในค่าเริ่มต้น(คำอธิบายไวยากรณ์) |
| ดี | ดี | ใบอนุญาตซอฟต์แวร์ Boost [หมายเหตุ 1 ] | |
| ยาอายุวัฒนะ | elixir-lang.org | อะปาเช่ 2.0 | ไลบรารีมาตรฐานประกอบด้วย โมดูล Regexที่ใช้ PCRE อัลกอริทึมการจับคู่ของไลบรารีนี้อิงตามไลบรารี PCRE แต่ไม่ได้เชื่อมต่อทุกส่วนของไลบรารี PCRE และบางส่วนของไลบรารีนี้มีฟังก์ชันการทำงานที่เหนือกว่าสิ่งที่ PCRE มีให้ ปัจจุบันใช้ PCRE เวอร์ชัน 8.40 (วันที่วางจำหน่าย 11 มกราคม 2017) |
| เออร์ลัง | erlang.org | อะปาเช่ 2.0 | ไลบรารีมาตรฐานประกอบด้วย โมดูล reที่ใช้ PCRE เป็นพื้นฐานอัลกอริทึมการจับคู่ของไลบรารีนี้อิงตามไลบรารี PCRE แต่ไม่ได้เชื่อมต่อทุกส่วนของไลบรารี PCRE และบางส่วนของไลบรารีนี้มีฟังก์ชันการทำงานที่เหนือกว่าสิ่งที่ PCRE มีให้ ปัจจุบันใช้ PCRE เวอร์ชัน 8.40 (วันที่วางจำหน่าย 11 มกราคม 2017) |
| ภาษาปาสคาลอิสระ ( ภาษาปาสคาลวัตถุ ) | freepascal.org | LGPLพร้อมข้อยกเว้นการเชื่อมโยงแบบคงที่ | Free Pascal 2.6 ขึ้นไปมาพร้อมกับ TRegExpr จาก Sorokin และไลบรารีนิพจน์ปกติอีกสองตัว ดูรายละเอียดเพิ่มเติมได้ที่wiki.lazarus.freepascal.org/Regexpr |
| ไป | โก.เดฟ | สไตล์ BSD | |
| ฮัสเคลล์ | ฮัสเคลล์.org | บีเอสดี3 | ละเว้นในรายงานด้านภาษา และในไลบรารีแบบลำดับชั้นของ GHC |
| ชวา | ชวา | ใบอนุญาตสาธารณะทั่วไปของ GNU | ในซอร์สโค้ดจะเขียน RE เป็นสตริง: ต้องใช้เครื่องหมายแบ็กสแลชสองตัว ซึ่งทำให้ความอ่านง่ายลดลง |
| JavaScript ( ECMAScript ) | อีซีเอ็มเอ-262 | บีเอสดี3 | ส่วนประกอบหลักของภาษาที่มี/.../modไวยากรณ์พิเศษ ในอดีตมีฟังก์ชันการทำงานจำกัด แต่ได้รับการปรับปรุงตั้งแต่ES2018มีกลไกการประมวลผลนิพจน์ปกติ (regex) หลักสองตัว ได้แก่Irregexp ของV8 (ใช้ใน Chromeและ เบราว์เซอร์ ที่ใช้ BlinkรวมถึงFirefoxและNode.js ) และYARR ของJavaScriptCore (ใน Safariและ เบราว์เซอร์ ที่ใช้ WebKit ) |
| จูเลีย | JuliaLang.org | ใบอนุญาต MIT | RE เป็นส่วนหนึ่งของไลบรารีหลักของภาษา โดยใช้ PCRE ในตัว และมีตัวห่อหุ้มเสริมสำหรับ ICU (โค้ดภาษา C) ให้ใช้งานได้ |
| ลัว | ลูอา.org | ใบอนุญาต MIT | ใช้ภาษาถิ่นที่เรียบง่ายและจำกัด สามารถเชื่อมโยงกับไลบรารีที่มีประสิทธิภาพมากกว่า เช่น PCRE หรือตัวแยกวิเคราะห์ทางเลือกอื่นๆ เช่น LPeg ได้ |
| มาเทมาติกา | วูลฟราม | กรรมสิทธิ์ | |
| .สุทธิ | เอ็มเอสดีเอ็น | ใบอนุญาต MIT [หมายเหตุ 2 ] [หมายเหตุ 3 ] | |
| นิม | นิม-ลัง.org | ใบอนุญาต MIT | ไลบรารีมาตรฐานประกอบด้วยโมดูล reและnreที่ใช้ PCRE รวมถึงทางเลือกอื่นๆ อีกมากมาย (เช่นstrutils , pegs ( การจับคู่ ไวยากรณ์นิพจน์การแยกวิเคราะห์ ), strscans , parseutilsเป็นต้น) |
| โอแคมล์ | แคมล์ | แอลจีพีแอล | ข้อมูล ณ ปี 2010โดยทั่วไปแล้วโมดูลมาตรฐานถือว่าล้าสมัยแล้ว[ 2 ]มักแนะนำให้ใช้ไลบรารีpcre (พร้อมการสนับสนุน PCRE อย่างเต็มที่) และre (ซึ่งไม่สมบูรณ์เท่า แต่อ้างว่ามีประสิทธิภาพดีกว่าและมีส่วนหน้าสำหรับไวยากรณ์ที่เป็นที่นิยม: PCRE, Perl, Posix, Emacs, shell globbing) |
| เพิร์ล | เพิร์ล.คอม | ลิขสิทธิ์ทางศิลปะหรือลิขสิทธิ์สาธารณะทั่วไปของ GNU | ส่วนกลางที่สมบูรณ์ของภาษา |
| พีพี | พีพี.เน็ต | ใบอนุญาต PHP | มีการใช้งานสองแบบ โดย PCRE มีประสิทธิภาพมากกว่าในด้านความเร็วและฟังก์ชันการทำงาน |
| POSIX C ( C ) | การเผยแพร่ทางเว็บตามมาตรฐาน POSIX.1 | ได้รับอนุญาตจากการใช้งานที่เกี่ยวข้อง | รองรับไวยากรณ์POSIX BRE และ ERE |
| ไพธอน | python.org | ใบอนุญาต Python Software Foundation | Python มีการใช้งานหลักสองแบบ คือre ที่มีมาให้ในตัว และไลบรารีregex |
| ทับทิม | ruby-lang.org | ใบอนุญาตสาธารณะทั่วไปของห้องสมุด GNU | Ruby เวอร์ชัน 1.8, 1.9 และ 2.0 รวมถึงเวอร์ชันที่ใหม่กว่านั้น ใช้เอนจินที่แตกต่างกัน โดย Ruby 1.9 ใช้ Oniguruma ส่วน Ruby 2.0 และเวอร์ชันที่ใหม่กว่านั้น ใช้ Onigmo ซึ่งเป็นเวอร์ชันที่แตกแขนงมาจาก Oniguruma |
| สนิม | เอกสาร.rs | ใบอนุญาต MIT | ไลบรารี regex หลักไม่รองรับนิพจน์ look-around แต่มีไลบรารี Oniguruma ที่ชื่อว่าonigซึ่งรองรับนิพจน์ดังกล่าว |
| SAP ABAP | SAP.com | กรรมสิทธิ์ | |
| ทีซีแอล | tcl.tk | ใบอนุญาต Tcl/Tk (แบบ BSD) | ไลบรารี Tcl ยังทำหน้าที่เป็นไลบรารีสำหรับนิพจน์ปกติอีกด้วย |
| ภาษาวูลฟรัม | วูลฟราม รีเสิร์ช | ลิขสิทธิ์เฉพาะ : สามารถใช้งานได้ฟรีในขอบเขตจำกัดบนแพลตฟอร์มการพัฒนาของ Wolfram | |
| โครงสร้าง XML | ดับเบิลยู3ซี | ได้รับอนุญาตจากการใช้งานที่เกี่ยวข้อง | |
| XPath 3 / XQuery | ดับเบิลยู3ซี | ได้รับอนุญาตจากการใช้งานที่เกี่ยวข้อง |
ลักษณะทางภาษา
หมายเหตุ:แอปพลิเคชันที่ใช้ไลบรารีสำหรับการสนับสนุนนิพจน์ปกติ ไม่จำเป็นต้องรองรับคุณสมบัติทั้งหมดของไลบรารีนั้น ตัวอย่างเช่น GNU grepใช้ PCRE แต่ไม่รองรับการค้นหาล่วงหน้า (lookahead) ในขณะที่ PCRE รองรับ
ตอนที่ 1
| ตัวระบุปริมาณ "+" | คลาสตัวละครที่ถูกปฏิเสธ | ตัวบ่งปริมาณที่ไม่โลภ[หมายเหตุ 1 ] | กลุ่มขี้อาย[หมายเหตุ 2 ] | การเรียกซ้ำ | มองไปข้างหน้า | มองไปข้างหลัง | การอ้างอิงย้อนกลับ[หมายเหตุ 3 ] | >9 ภาพที่จัดทำดัชนีได้ | |
|---|---|---|---|---|---|---|---|---|---|
| บูสต์.เรเจ็กซ์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่[หมายเหตุ 4 ] | ใช่ | ใช่ | ใช่ | ใช่ |
| บูสต์ เอ็กซ์เพรสซีฟ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่[หมายเหตุ 5 ] | ใช่ | ใช่ | ใช่ | ใช่ |
| ซีแอล-พีพีซีอาร์ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ใช่ |
| เอ็มเอดิเตอร์ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | เลขที่ |
| เฟรจ | ไม่[หมายเหตุ 6 ] | เลขที่ | บางส่วน[หมายเหตุ 6 ] | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | ใช่ |
| GLib /GRegex | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| จีเอ็นยูเกรป | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ไม่มีข้อมูล |
| ฮัสเคลล์ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ใช่ |
| อาร์ซีพี | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | ใช่ |
| ไอซียูเรเก็กซ์ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ชวา | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ใช่ |
| JavaScript ( ECMAScript ) | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่[หมายเหตุ 7 ] | ใช่ | ใช่ |
| เจจีซอฟต์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่[ 3 ] | ใช่ | ใช่ | ใช่ | ใช่ |
| ลัว | ใช่ | ใช่ | บางส่วน[หมายเหตุ 8 ] | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | เลขที่ |
| .สุทธิ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ใช่ |
| โอแคมล์ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | เลขที่ |
| พีซีอาร์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| เพิร์ล | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| พีพี | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ไพธอน | ใช่ | ใช่ | ใช่ | ใช่ | ใช่[หมายเหตุ 9 ] | ใช่ | ใช่ | ใช่ | ใช่ |
| Qt /QRegExp | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | เลขที่ | ใช่ | ใช่ |
| RE2 | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ |
| รีเจ็กซ์+ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่[หมายเหตุ 10 ] | ใช่ | ใช่ |
| รูบี้, โอนิกโม | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ทีอาร์อี | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | เลขที่ |
| วิม | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | เลขที่ |
| อาร์จีเอ็กซ์ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ใช่ |
| ทีซีแอล | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | ใช่ |
| เทรกเอ็กซ์พร | ใช่ | ? | ใช่ | ? | ? | ? | ? | ? | ? |
| โครงสร้าง XML | ใช่ | ใช่ | เลขที่ | ไม่มีข้อมูล | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ไม่มีข้อมูล |
| XPath 3 / XQuery | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | ใช่ |
| XRegExp | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่[หมายเหตุ 7 ] | ใช่ | ใช่ |
- ↑ ตัวระบุปริมาณ แบบไม่โลภ (Non-greedy quantifiers) จะจับคู่ตัวอักษรให้น้อยที่สุดเท่าที่จะเป็นไปได้ แทนที่จะเป็นจำนวนมากตามค่าเริ่มต้น โปรดทราบว่าเอนจิ้นรุ่นเก่าจำนวนมากก่อนมาตรฐาน POSIXไม่ได้ใช้ตัวระบุปริมาณแบบโลภ และไม่มีตัวระบุปริมาณแบบโลภเลย
- ↑กลุ่มแบบ Shyหรือที่เรียกว่า กลุ่มแบบ ไม่จับภาพ (non-capturing groups) ไม่สามารถอ้างอิงถึงได้ด้วย backreferences กลุ่มแบบไม่จับภาพใช้เพื่อเพิ่มความเร็วในการจับคู่ในกรณีที่ไม่จำเป็นต้องเข้าถึงเนื้อหาของกลุ่มในภายหลัง
- ↑การอ้างอิงย้อนกลับช่วยให้สามารถอ้างอิงถึงกลุ่มที่ตรงกันก่อนหน้านี้ในส่วนต่อๆ ไปของนิพจน์ปกติและ/หรือสตริงทดแทน (ถ้ามี) ตัวอย่างเช่น ([ab]+)\1จะตรงกับ "abab" แต่ไม่ตรงกับ "abaab"
- ↑ "ไวยากรณ์นิพจน์ปกติของ Perl - 1.47.0 "
- ↑ "คู่มือผู้ใช้ - 1.47.0 "
- 1 2 FREJ ไม่มีตัวบ่งปริมาณที่ซ้ำกัน แต่มีองค์ประกอบ "ทางเลือก" ซึ่งทำงานคล้ายกับตัวบ่งปริมาณ "?" แบบง่ายๆ
- 1 2ณ ปี ES2018
- ↑ตัวบ่งปริมาณที่ไม่โลภเพียงตัวเดียวของ Lua คือ `non-greedy`
-ซึ่งเป็นเวอร์ชันที่ไม่โลภของ `non-greedy` Lua*ไม่มีเวอร์ชันที่ไม่โลภของ `non-greedy`+หรือ?`non-greedy` ในกรณีแรก ผลลัพธ์ที่ไม่โลภสามารถทำได้โดยการทำซ้ำโทเค็นที่ตามด้วย `non-greedy`-แต่ในกรณีหลัง ไม่มีสิ่งที่เทียบเท่าได้ - ↑รองรับเฉพาะ ไลบรารี regex เสริม เท่านั้น
- ↑ความยาวแปรผันได้ ผ่านกลไกพื้นฐาน ES2018+
ตอนที่ 2
| คำสั่ง[หมายเหตุ 1 ] | เงื่อนไข | กลุ่มอะตอม[หมายเหตุ 2 ] | การจับภาพแบบระบุชื่อ[หมายเหตุ 3 ] | ความคิดเห็น | โค้ดฝังตัว | การสนับสนุนคุณสมบัติUnicode [ 4 ] | กลุ่มสมดุล[หมายเหตุ 4 ] | การมองย้อนหลังที่มีความยาวแปรผันได้[หมายเหตุ 5 ] | |
|---|---|---|---|---|---|---|---|---|---|
| บูสต์.เรเจ็กซ์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | บางส่วน[หมายเหตุ 6 ] | เลขที่ | เลขที่ |
| บูสต์ เอ็กซ์เพรสซีฟ | ใช่ | เลขที่ | ใช่ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| ซีแอล-พีพีซีอาร์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | บางส่วน[หมายเหตุ 6 ] | เลขที่ | เลขที่ |
| เอ็มเอดิเตอร์ | ใช่ | ใช่ | ? | ? | ใช่ | เลขที่ | ? | เลขที่ | เลขที่ |
| เฟรจ | เลขที่ | เลขที่ | ใช่ | ใช่ | ใช่ | เลขที่ | ? | เลขที่ | เลขที่ |
| GLib /GRegex | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | บางส่วน[หมายเหตุ 6 ] | เลขที่ | เลขที่ |
| จีเอ็นยูเกรป | ใช่ | ใช่ | ? | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| ฮัสเคลล์ | ? | ? | ? | ? | ? | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| อาร์ซีพี | ใช่ | ใช่ | เลขที่ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| ไอซียูเรเก็กซ์ | ใช่ | เลขที่ | ใช่ | ใช่[หมายเหตุ 7 ] | ใช่ | เลขที่ | ใช่ | เลขที่ | เลขที่ |
| ชวา | ใช่ | เลขที่ | ใช่ | ใช่[หมายเหตุ 8 ] | ใช่ | เลขที่ | บางส่วน[หมายเหตุ 6 ] | เลขที่ | เลขที่ |
| JavaScript ( ECMAScript ) | เลขที่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | เลขที่ | บางส่วน[หมายเหตุ 6 ] [หมายเหตุ 9 ] [ 5 ] | เลขที่ | ใช่ |
| เจจีซอฟต์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | บางส่วน[หมายเหตุ 6 ] | เลขที่ | ใช่ |
| ลัว | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| .สุทธิ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | บางส่วน[หมายเหตุ 6 ] | ใช่ | ใช่ |
| โอแคมล์ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| พีซีอาร์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | เลขที่ |
| เพิร์ล | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ไม่[หมายเหตุ 10 ] |
| พีพี | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| ไพธอน | ใช่ | ใช่ | ใช่[หมายเหตุ 11 ] | ใช่ | ใช่ | เลขที่ | ใช่[หมายเหตุ 12 ] | เลขที่ | ใช่[หมายเหตุ 13 ] |
| Qt /QRegExp | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
| RE2 | ใช่ | เลขที่ | ? | ใช่ | เลขที่ | เลขที่ | บางส่วน[หมายเหตุ 6 ] | เลขที่ | เลขที่ |
| รีเจ็กซ์+ | ใช่[หมายเหตุ 14 ] | เลขที่ | ใช่[หมายเหตุ 15 ] | ใช่[หมายเหตุ 16 ] | ใช่[หมายเหตุ 17 ] | เลขที่ | ใช่[หมายเหตุ 18 ] | เลขที่ | ใช่[หมายเหตุ 19 ] |
| รูบี้, โอนิกโม | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | บางส่วน[หมายเหตุ 6 ] | เลขที่ | เลขที่ |
| ทีซีแอล | ใช่ | เลขที่ | ใช่ | เลขที่ | ใช่ | เลขที่ | ใช่ | เลขที่ | เลขที่ |
| ทีอาร์อี | ใช่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | ? | เลขที่ | เลขที่ |
| วิม | ใช่ | เลขที่ | ใช่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ |
| อาร์จีเอ็กซ์ | ใช่ | ใช่ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่ | เลขที่ | เลขที่ |
| โครงสร้าง XML | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | เลขที่ |
| XPath 3 / XQuery | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | เลขที่ | ใช่ | เลขที่ | เลขที่ |
| XRegExp | นำหน้าเท่านั้น | เลขที่ | เลขที่ | ใช่ | ใช่ | เลขที่ | ใช่ | เลขที่ | ใช่ |
- ↑เรียกอีกอย่างว่าตัวแก้ไขแฟล็กตัวแก้ไขโหมดหรือตัวอักษรตัวเลือกตัวอย่างรูปแบบ: "(?i:test)"
- ↑เรียกอีกอย่างว่านิพจน์ย่อยอิสระ
- ↑คล้ายกับการอ้างอิงย้อนกลับ แต่ใช้ชื่อแทนดัชนี
- ↑คุณสมบัติพิเศษที่ช่วยให้จับคู่โครงสร้างที่สมดุลได้โดยไม่ต้องใช้การเรียกซ้ำ
- ↑หมายถึงความเป็นไปได้ในการรวมตัวบ่งปริมาณไว้ใน look-behind ซึ่งทำให้ความยาวของ look-behind นั้นคาดเดาไม่ได้
- 1 2 3 4 5 6 7 8 9การรองรับคุณสมบัติ Unicode อาจไม่สมบูรณ์ (ผลิตภัณฑ์มีการอัปเดตอย่างต่อเนื่อง!)ทั้งหมดจะไม่สมบูรณ์เมื่อมีการออก Unicode เวอร์ชันใหม่จนกว่าจะได้รับการอัปเดตให้เป็นไปตามมาตรฐาน
- ↑มีให้บริการตั้งแต่ ICU55 เป็นต้นไป
- ↑มีให้ใช้งานตั้งแต่ JDK7 เป็นต้นไป
- ↑การรองรับและขอบเขตของคุณสมบัติขึ้นอยู่กับการใช้งาน
- ↑เพิ่มการสนับสนุนเชิงทดลองในเวอร์ชัน 5.29.9
- ↑รองรับโดย Python เวอร์ชัน 3.11 ขึ้นไป และ เฉพาะไลบรารี regex ที่เป็นตัวเลือก เท่านั้น
- ↑อาจใช้งานได้เฉพาะในไลบรารี regex เมื่อใช้กับ Python เวอร์ชัน 3.3 ขึ้นไปเท่านั้น
- ↑รองรับเฉพาะ ไลบรารี regex เสริม เท่านั้น
- ↑ผ่านสไตล์ (?ims:...)
- ↑ (?>...) - แปลงเป็นโค้ดเนทีฟ
- ↑ ES2018 (?<name>... ไวยากรณ์)
- ↑ x flag (โหมดเว้นวรรคอิสระ เปิดใช้งานตลอดเวลา)
- ↑ผ่านแฟล็ก v ที่เปิดใช้งานตลอดเวลา
- ↑ผ่านกลไกพื้นฐาน ES2018+
คุณสมบัติของ API
| รองรับUTF-16โดยตรง[หมายเหตุ 1 ] | รองรับUTF-8โดยตรง[หมายเหตุ 1 ] | การจับคู่หลายบรรทัด | ตรงกันบางส่วน[หมายเหตุ 2 ] | |
|---|---|---|---|---|
| บูสต์.เรเจ็กซ์ | เลขที่ | เลขที่ | ใช่ | ใช่ |
| GLib /GRegex | ใช่ | ใช่ | ใช่ | ใช่ |
| อาร์ซีพี | ใช่ | ใช่ | เลขที่ | ใช่ |
| ไอซียูเรเก็กซ์ | ใช่ | เลขที่ | ใช่ | ? |
| ชวา | ใช่[หมายเหตุ 3 ] | ใช่[หมายเหตุ 3 ] | ใช่ | ใช่ |
| .สุทธิ | ไม่[หมายเหตุ 4 ] | ใช่ | ใช่ | ? |
| พีซีอาร์ | ใช่[หมายเหตุ 5 ] | ใช่ | ใช่ | ใช่ |
| Qt /QRegExp | ใช่ | เลขที่ | เลขที่ | ใช่[หมายเหตุ 6 ] |
| Qt /QRegularExpression | ใช่ | ใช่ | ใช่ | ใช่ |
| ทีซีแอล | ใช่ | ใช่[หมายเหตุ 7 ] | ใช่ | ? |
| ทีอาร์อี | ใช่ | ใช่ | ใช่ | ? |
| อาร์จีเอ็กซ์ | เลขที่ | เลขที่ | ใช่ | ? |
| wxWidgets :: wxRegEx [หมายเหตุ 8 ] | ใช่ | ใช่ | ใช่ | ? |
| XRegExp | ใช่ | ใช่ | ใช่ | เลขที่ |
- 1 2หมายความว่ารูปแบบดังกล่าวสามารถใช้งานภายในได้โดยไม่ต้องแปลงอย่างชัดเจน
- ↑การจับคู่บางส่วนของนิพจน์ปกติทั้งหมด ตัวอย่างเช่น รูปแบบ ".*END$" จะจับคู่สตริงใดๆ ได้บางส่วน แต่จะจับคู่เฉพาะสตริงที่ลงท้ายด้วย END เท่านั้น.
- 1 2รองรับมาตรฐาน Unicode 15.0 ตั้งแต่ปี 2023 เป็นต้นไป.
- ↑การใช้งานใช้ การรองรับ/คุณสมบัติ ของ UCS-2 ดั้งเดิม ดังนั้นจึงรู้จักอักขระได้เพียง 64,000 ตัวเท่านั้น (เทียบกับ UTF-16ที่รองรับได้ 1,112,064 ตัว) ตัวแทนนักพัฒนาของ Microsoft ตอบรายงานข้อบกพร่องนี้ในปี 2010 ว่า "จะไม่แก้ไข".
- ↑ตั้งแต่เวอร์ชัน 8.30 เป็นต้นไป
- ↑การจับคู่บางส่วนจะดำเนินการโดยปริยาย ซึ่งจำเป็นต้องเรียกฟังก์ชัน matchedLength() แยกต่างหากหากการจับคู่ที่ตรงกันทุกประการล้มเหลว
- ↑ Tcl มีฟังก์ชันสำหรับการแปลงไปมาระหว่าง UTF-8
- ↑ wxRegEx ใช้ไลบรารี POSIXที่ระบบจัดหาให้หรือหากไม่มีและสำหรับโหมด Unicode จะใช้ไลบรารีของ Henry Spencer
ดูเพิ่มเติม
ลิงก์ภายนอก
- การเปรียบเทียบรูปแบบนิพจน์ปกติ – การเปรียบเทียบโดยละเอียดของรูปแบบนิพจน์ปกติที่ได้รับความนิยมมากที่สุด
- สรุปไวยากรณ์ Regexp
- การทดสอบนิพจน์ปกติแบบออนไลน์ – รองรับภาษา Java, JavaScript, .Net, PHP, Python และ Ruby
- การนำนิพจน์ปกติไปใช้ – ชุดบทความโดย รัสส์ ค็อกซ์ ผู้เขียนRE2
- เครื่องมือวิเคราะห์นิพจน์ปกติ