กลับไปหน้าบทความ

อ่าน 5 นาที

การเปรียบเทียบเครื่องมือประมวลผลนิพจน์ปกติ

เปลี่ยนทางจากการเคลื่อนไหว

หมายเหตุ:แอปพลิเคชันที่ใช้ไลบรารีสำหรับการสนับสนุนนิพจน์ปกติ ไม่จำเป็นต้องรองรับคุณสมบัติทั้งหมดของไลบรารีนั้น ตัวอย่างเช่น GNU grepใช้ PCRE แต่ไม่รองรับการค้นหาล่วงหน้า...

การเปรียบเทียบเครื่องมือประมวลผลนิพจน์ปกติ

นี่คือการเปรียบเทียบเครื่องมือประมวลผลนิพจน์ปกติ (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.orgC, C++ [หมายเหตุ 5 ]บีเอสดีApache HTTP Server , Nginx , BBEdit , Edbrowse , Julia , HHVM , Notepad++ < 6.0.0, PHP , Delphi , R , Exim , SWI-Prolog , Elixir , Erlang
Qt /QRegExpDigia เก็บถาวรไว้เมื่อวันที่ 12 ธันวาคม 2013 ที่Wayback Machineซี++Qt GNU GPL เวอร์ชัน 3.0

Qt GNU LGPL v. 2.1 , Qt เชิงพาณิชย์

เคท , ไคล์
regex - ไลบรารีนิพจน์ปกติของเฮนรี สเปนเซอร์อาร์กิวเมนต์ลิสต์ซีบีเอสดี 
RE2RE2ซี++บีเอสดี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
XRegExpXRegExpสคริปต์เอ็มไอที 
ยาร์ยาร์ซี++BSD 2 ข้อSafari , เบราว์เซอร์ที่ใช้ WebKit , QML
  1. เดิมชื่อ Regex++
  2. 1 2หนึ่งในเครื่องมือแสดงนิพจน์ปกติแบบฟัซซี
  3. มีให้ใช้งานตั้งแต่เวอร์ชัน 2.13.0 เป็นต้นไป
  4. ICU4J เวอร์ชัน Java ไม่รองรับนิพจน์ปกติ (Regular Expression)
  5. การเชื่อมต่อ C++ ได้รับการพัฒนาโดย Google และกลายเป็นส่วนหนึ่งของ PCRE อย่างเป็นทางการในปี 2549

ภาษา

รายชื่อภาษาและเฟรมเวิร์กที่รองรับนิพจน์ปกติ (Regular Expression)
ภาษาเว็บไซต์อย่างเป็นทางการใบอนุญาตซอฟต์แวร์หมายเหตุ
แอ็กชันสคริปต์ 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.orgLGPLพร้อมข้อยกเว้นการเชื่อมโยงแบบคงที่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ใบอนุญาต MITRE เป็นส่วนหนึ่งของไลบรารีหลักของภาษา โดยใช้ 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 FoundationPython มีการใช้งานหลักสองแบบ คือre ที่มีมาให้ในตัว และไลบรารีregex
ทับทิมruby-lang.orgใบอนุญาตสาธารณะทั่วไปของห้องสมุด GNURuby เวอร์ชัน 1.8, 1.9 และ 2.0 รวมถึงเวอร์ชันที่ใหม่กว่านั้น ใช้เอนจินที่แตกต่างกัน โดย Ruby 1.9 ใช้ Oniguruma ส่วน Ruby 2.0 และเวอร์ชันที่ใหม่กว่านั้น ใช้ Onigmo ซึ่งเป็นเวอร์ชันที่แตกแขนงมาจาก Oniguruma
สนิมเอกสาร.rsใบอนุญาต MITไลบรารี regex หลักไม่รองรับนิพจน์ look-around แต่มีไลบรารี Oniguruma ที่ชื่อว่าonigซึ่งรองรับนิพจน์ดังกล่าว
SAP ABAPSAP.comกรรมสิทธิ์
ทีซีแอลtcl.tkใบอนุญาต Tcl/Tk (แบบ BSD)ไลบรารี Tcl ยังทำหน้าที่เป็นไลบรารีสำหรับนิพจน์ปกติอีกด้วย
ภาษาวูลฟรัมวูลฟราม รีเสิร์ชลิขสิทธิ์เฉพาะ : สามารถใช้งานได้ฟรีในขอบเขตจำกัดบนแพลตฟอร์มการพัฒนาของ Wolfram
โครงสร้าง XMLดับเบิลยู3ซีได้รับอนุญาตจากการใช้งานที่เกี่ยวข้อง
XPath 3 / XQueryดับเบิลยู3ซีได้รับอนุญาตจากการใช้งานที่เกี่ยวข้อง
  1. "STD.regex - ภาษาโปรแกรม D - Digital Mars "
  2. "Dotnet/Corefx" . GitHub . 16 กุมภาพันธ์ 2022.
  3. "Dotnet/Corefx" . GitHub . 16 กุมภาพันธ์ 2022.

ลักษณะทางภาษา

หมายเหตุ:แอปพลิเคชันที่ใช้ไลบรารีสำหรับการสนับสนุนนิพจน์ปกติ ไม่จำเป็นต้องรองรับคุณสมบัติทั้งหมดของไลบรารีนั้น ตัวอย่างเช่น GNU grepใช้ PCRE แต่ไม่รองรับการค้นหาล่วงหน้า (lookahead) ในขณะที่ PCRE รองรับ

ตอนที่ 1

การเปรียบเทียบคุณลักษณะทางภาษา (ตอนที่ 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 ]ใช่ใช่
  1. ตัวระบุปริมาณ แบบไม่โลภ (Non-greedy quantifiers) จะจับคู่ตัวอักษรให้น้อยที่สุดเท่าที่จะเป็นไปได้ แทนที่จะเป็นจำนวนมากตามค่าเริ่มต้น โปรดทราบว่าเอนจิ้นรุ่นเก่าจำนวนมากก่อนมาตรฐาน POSIXไม่ได้ใช้ตัวระบุปริมาณแบบโลภ และไม่มีตัวระบุปริมาณแบบโลภเลย
  2. กลุ่มแบบ Shyหรือที่เรียกว่า กลุ่มแบบ ไม่จับภาพ (non-capturing groups) ไม่สามารถอ้างอิงถึงได้ด้วย backreferences กลุ่มแบบไม่จับภาพใช้เพื่อเพิ่มความเร็วในการจับคู่ในกรณีที่ไม่จำเป็นต้องเข้าถึงเนื้อหาของกลุ่มในภายหลัง
  3. การอ้างอิงย้อนกลับช่วยให้สามารถอ้างอิงถึงกลุ่มที่ตรงกันก่อนหน้านี้ในส่วนต่อๆ ไปของนิพจน์ปกติและ/หรือสตริงทดแทน (ถ้ามี) ตัวอย่างเช่น ([ab]+)\1จะตรงกับ "abab" แต่ไม่ตรงกับ "abaab"
  4. "ไวยากรณ์นิพจน์ปกติของ Perl - 1.47.0 "
  5. "คู่มือผู้ใช้ - 1.47.0 "
  6. 1 2 FREJ ไม่มีตัวบ่งปริมาณที่ซ้ำกัน แต่มีองค์ประกอบ "ทางเลือก" ซึ่งทำงานคล้ายกับตัวบ่งปริมาณ "?" แบบง่ายๆ
  7. 1 2ณ ปี ES2018
  8. ตัวบ่งปริมาณที่ไม่โลภเพียงตัวเดียวของ Lua คือ `non-greedy`-ซึ่งเป็นเวอร์ชันที่ไม่โลภของ `non-greedy` Lua*ไม่มีเวอร์ชันที่ไม่โลภของ `non-greedy`+หรือ?`non-greedy` ในกรณีแรก ผลลัพธ์ที่ไม่โลภสามารถทำได้โดยการทำซ้ำโทเค็นที่ตามด้วย `non-greedy`-แต่ในกรณีหลัง ไม่มีสิ่งที่เทียบเท่าได้
  9. รองรับเฉพาะ ไลบรารี regex เสริม เท่านั้น
  10. ความยาวแปรผันได้ ผ่านกลไกพื้นฐาน ES2018+

ตอนที่ 2

การเปรียบเทียบคุณลักษณะทางภาษา (ตอนที่ 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นำหน้าเท่านั้นเลขที่เลขที่ใช่ใช่เลขที่ใช่เลขที่ใช่
  1. เรียกอีกอย่างว่าตัวแก้ไขแฟล็กตัวแก้ไขโหมดหรือตัวอักษรตัวเลือกตัวอย่างรูปแบบ: "(?i:test)"
  2. เรียกอีกอย่างว่านิพจน์ย่อยอิสระ
  3. คล้ายกับการอ้างอิงย้อนกลับ แต่ใช้ชื่อแทนดัชนี
  4. คุณสมบัติพิเศษที่ช่วยให้จับคู่โครงสร้างที่สมดุลได้โดยไม่ต้องใช้การเรียกซ้ำ
  5. หมายถึงความเป็นไปได้ในการรวมตัวบ่งปริมาณไว้ใน look-behind ซึ่งทำให้ความยาวของ look-behind นั้นคาดเดาไม่ได้
  6. 1 2 3 4 5 6 7 8 9การรองรับคุณสมบัติ Unicode อาจไม่สมบูรณ์ (ผลิตภัณฑ์มีการอัปเดตอย่างต่อเนื่อง!)ทั้งหมดจะไม่สมบูรณ์เมื่อมีการออก Unicode เวอร์ชันใหม่จนกว่าจะได้รับการอัปเดตให้เป็นไปตามมาตรฐาน
  7. มีให้บริการตั้งแต่ ICU55 เป็นต้นไป
  8. มีให้ใช้งานตั้งแต่ JDK7 เป็นต้นไป
  9. การรองรับและขอบเขตของคุณสมบัติขึ้นอยู่กับการใช้งาน
  10. เพิ่มการสนับสนุนเชิงทดลองในเวอร์ชัน 5.29.9
  11. รองรับโดย Python เวอร์ชัน 3.11 ขึ้นไป และ เฉพาะไลบรารี regex ที่เป็นตัวเลือก เท่านั้น
  12. อาจใช้งานได้เฉพาะในไลบรารี regex เมื่อใช้กับ Python เวอร์ชัน 3.3 ขึ้นไปเท่านั้น
  13. รองรับเฉพาะ ไลบรารี regex เสริม เท่านั้น
  14. ผ่านสไตล์ (?ims:...)
  15. (?>...) - แปลงเป็นโค้ดเนทีฟ
  16. ES2018 (?<name>... ไวยากรณ์)
  17. x flag (โหมดเว้นวรรคอิสระ เปิดใช้งานตลอดเวลา)
  18. ผ่านแฟล็ก v ที่เปิดใช้งานตลอดเวลา
  19. ผ่านกลไกพื้นฐาน ES2018+

คุณสมบัติของ API

การเปรียบเทียบคุณสมบัติของ 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. 1 2หมายความว่ารูปแบบดังกล่าวสามารถใช้งานภายในได้โดยไม่ต้องแปลงอย่างชัดเจน
  2. การจับคู่บางส่วนของนิพจน์ปกติทั้งหมด ตัวอย่างเช่น รูปแบบ ".*END$" จะจับคู่สตริงใดๆ ได้บางส่วน แต่จะจับคู่เฉพาะสตริงที่ลงท้ายด้วย END เท่านั้น.
  3. 1 2รองรับมาตรฐาน Unicode 15.0 ตั้งแต่ปี 2023 เป็นต้นไป.
  4. การใช้งานใช้ การรองรับ/คุณสมบัติ ของ UCS-2 ดั้งเดิม ดังนั้นจึงรู้จักอักขระได้เพียง 64,000 ตัวเท่านั้น (เทียบกับ UTF-16ที่รองรับได้ 1,112,064 ตัว) ตัวแทนนักพัฒนาของ Microsoft ตอบรายงานข้อบกพร่องนี้ในปี 2010 ว่า "จะไม่แก้ไข".
  5. ตั้งแต่เวอร์ชัน 8.30 เป็นต้นไป
  6. การจับคู่บางส่วนจะดำเนินการโดยปริยาย ซึ่งจำเป็นต้องเรียกฟังก์ชัน matchedLength() แยกต่างหากหากการจับคู่ที่ตรงกันทุกประการล้มเหลว
  7. Tcl มีฟังก์ชันสำหรับการแปลงไปมาระหว่าง UTF-8
  8. wxRegEx ใช้ไลบรารี POSIXที่ระบบจัดหาให้หรือหากไม่มีและสำหรับโหมด Unicode จะใช้ไลบรารีของ Henry Spencer

ดูเพิ่มเติม

  • การเปรียบเทียบรูปแบบนิพจน์ปกติ – การเปรียบเทียบโดยละเอียดของรูปแบบนิพจน์ปกติที่ได้รับความนิยมมากที่สุด
  • สรุปไวยากรณ์ Regexp
  • การทดสอบนิพจน์ปกติแบบออนไลน์ – รองรับภาษา Java, JavaScript, .Net, PHP, Python และ Ruby
  • การนำนิพจน์ปกติไปใช้ – ชุดบทความโดย รัสส์ ค็อกซ์ ผู้เขียนRE2
  • เครื่องมือวิเคราะห์นิพจน์ปกติ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Comparison_of_regular_expression_engines&oldid=1360390402 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การเปรียบเทียบเครื่องมือประมวลผลนิพจน์ปกติ

หมายเหตุ:แอปพลิเคชันที่ใช้ไลบรารีสำหรับการสนับสนุนนิพจน์ปกติ ไม่จำเป็นต้องรองรับคุณสมบัติทั้งหมดของไลบรารีนั้น ตัวอย่างเช่น GNU grepใช้ PCRE แต่ไม่รองรับการค้นหาล่วงหน้า...

ภาษา

รายชื่อภาษาและเฟรมเวิร์กที่รองรับนิพจน์ปกติ (Regular Expression) ภาษา เว็บไซต์อย่างเป็นทางการ ใบอนุญาตซอฟต์แวร์ หมายเหตุ style=\"background: #ececec; color: black; font-weight: bold; vertical-align: middle; text-align: left; \" class=\"table-rh\"...

ลักษณะทางภาษา

หมายเหตุ: แอปพลิเคชันที่ใช้ไลบรารีสำหรับการสนับสนุนนิพจน์ปกติ ไม่จำเป็นต้องรองรับคุณสมบัติทั้งหมดของไลบรารีนั้น ตัวอย่างเช่น GNU grep ใช้ PCRE แต่ไม่รองรับการค้นหาล่วงหน้า (lookahead) ในขณะที่ PCRE รองรับ

ตอนที่ 1

การเปรียบเทียบคุณลักษณะทางภาษา (ตอนที่ 1) ตัวระบุปริมาณ "+" คลาสตัวละครที่ถูกปฏิเสธ ตัวบ่งปริมาณที่ไม่โลภ [ หมายเหตุ 1 ] กลุ่มขี้อาย [ หมายเหตุ 2 ] การเรียกซ้ำ มองไปข้างหน้า มองไปข้างหลัง การอ้างอิงย้อนกลับ [ หมายเหตุ 3 ] >9 ภาพที่จัดทำดัชนีได้...