Jump to content

Сравнение движков регулярных выражений

Это сравнение регулярных выражений движков .

Библиотеки [ править ]

Список библиотек регулярных выражений
Имя Официальный сайт Язык программирования Лицензия на программное обеспечение Используется
Повышение .Регулярного выражения [Примечание 1] Повышение библиотеки C++ С++ Способствовать росту Блокнот++ >= 6.0.0, EmEditor
Boost.Xpressive Повышение библиотеки C++ С++ Способствовать росту  
ДЕЛКС РегЭксЛаб С++ Собственный  
FREJ [Примечание 2] Нечеткие регулярные выражения для Java Ява LGPL  
GLib /GRegex [Примечание 3] Справочное руководство по GLib С LGPL  
GNU регулярное выражение Справочное руководство по Gnulib С LGPL GNU libc , программы GNU
ГРЕТА Microsoft Исследования С++ Собственный  
Грегекс Компания "Гровф" РТЛ, ЗОЖ Собственный FPGA ускорил механизм регулярных выражений >100 Гбит/с для отраслей кибербезопасности, финансов и электронной коммерции.
Гиперскан Интел C, x86 -специфичная сборка ( SSSE3 + [1] ) 3-пунктовый BSD Расспамд
отделение интенсивной терапии Международные компоненты для Unicode С, С++ [Примечание 4] отделение интенсивной терапии Foundation (версии с открытым исходным кодом для Apple и Swift)
Джакарта Регулярное выражение Проект Апач Джакарта Ява Апач  
java.util.regex Руководство пользователя Java Ява GNU GPLv2 с исключением Classpath jПравить
JRegex JRegex Ява БСД  
МАТЛАБ Регулярные выражения Язык MATLAB Собственный  
Онигурума Коса С БСД Atom , Take Command Console , Tera Term , TextMate , Sublime Text , SubEthaEdit , EmEditor и jq
Паттво Стивсофт Java (совместим с Java 1.0) LGPL  
ПКРЕ pcre.org С, С++ [Примечание 5] БСД HTTP-сервер Apache , Nginx , BBEdit , Edbrowse , Julia , HHVM , Notepad++ <6.0.0, PHP , Delphi , R , Exim SWI-Prolog
Qt /QRegExp Digia. Архивировано 12 декабря 2013 г. в Wayback Machine. С++ Qt GNU GPL v. 3.0 ,

Qt GNU LGPL v. 2.1 , Qt Commercial

Кейт , Кайл
regex — Генри Спенсера библиотеки регулярных выражений . список аргументов С БСД  
РЕ2 РЕ2 С++ БСД Go , Google Таблицы, Gmail, G Suite
Генри Спенсера Расширенные регулярные выражения Ткл С БСД  
РГКС РГКС Библиотека компонентов на основе C++ P6R  
РХП Титан ИК РТЛ Собственный аппаратное ускорение поиска с использованием RegEx, доступное для ASIC, FPGA и облака. Обеспечивает массовую параллельную обработку контента на сверхвысоких скоростях.
субрег. Мэтт Бакнелл С С  
ТПерлрегекс Компонент VCL TPerlRegEx Объектный Паскаль MPLv1.1  
ТРИ [Примечание 2] Вилле Лаурикари С БСД мышца
TRegExpr TRegExpr , документация ,

( Студия RegExp )

Объектный Паскаль Двойная лицензия: бесплатное ПО или LGPL с исключением статической привязки. Тотал Коммандер
Язык Wolfram ( Математика ) Центр языковой документации Wolfram Вольфрам Язык Собственный Mathematica , платформа разработки Wolfram
XRegExp XRegExp JavaScript С  
  1. ^ Ранее назывался Regex++.
  2. ^ Jump up to: Перейти обратно: а б Один из нечетких движков регулярных выражений .
  3. ^ Включено с версии 2.13.0.
  4. ^ ICU4J, версия Java, не поддерживает регулярные выражения.
  5. ^ Привязки C++ были разработаны Google и официально стали частью PCRE в 2006 году.

Языки [ править ]

Список языков и фреймворков, включая поддержку регулярных выражений
Язык Официальный сайт Лицензия на программное обеспечение Примечания
Экшнскрипт 3 Технологический центр ActionScript Бесплатно
APL ( APLX , Диалог, GNU) АПЛ вики Лицензировано соответствующей реализацией ⎕SS (ПКРЕ), ⎕R/ ⎕S (ПКРЕ), ⎕SS (PCRE2) соответственно
С++11 ( С++ ) Веб-сайт стандартов C++ Лицензировано соответствующей реализацией Начиная с ISO14822:2011(e), по умолчанию аналогично ECMAScript (описание грамматики).
Д Д Лицензия на программное обеспечение Boost [Примечание 1]
Бесплатный Паскаль ( Объектный Паскаль ) freepascal.org LGPL с исключением статической привязки Free Pascal 2.6+ поставляется с TRegExpr от Сорокина и двумя другими библиотеками регулярных выражений; См. wiki.lazarus.freepascal.org/Regexpr .
Идти Golang.org BSD-стиль
Хаскелл Haskell.org БСД3 Опущено в языковом отчете и в иерархических библиотеках GHC.
Ява Ява Стандартная общественная лицензия GNU RE записываются в исходном коде как строки: все обратные косые черты необходимо удваивать, что ухудшает читаемость.
JavaScript ( ECMAScript ) ЭКМА-262 БСД3 Ограничено, но RE являются первоклассными гражданами языка с особыми /.../mod синтаксис.
Юлия JuliaLang.org МОЯ лицензия RE являются частью базовой библиотеки языка, использующей встроенный PCRE, и доступна дополнительная оболочка для (код C) ICU.
Два Lua.org МОЯ лицензия Использует упрощенный ограниченный диалект; может быть привязан к более мощной библиотеке, например PCRE, или альтернативному парсеру, например LPeg.
Математика Вольфрам Собственный
.СЕТЬ MSDN МОЯ лицензия [Примечание 2] [Примечание 3]
Nim nim-lang.org МОЯ лицензия на основе PCRE Стандартная библиотека включает модули re и nre , а также различные альтернативы (например, strutils , pegs ( сопоставление грамматики выражений ), strscans , parseutils и т. д.).
OCaml Камл LGPL По состоянию на 2010 год , стандартный модуль обычно считается устаревшим; [2] часто рекомендуемыми библиотеками являются pcre (с полной поддержкой PCRE) и re (которые не столь полны, но требуют более высокой производительности и предоставляют интерфейсы для популярных синтаксисов: PCRE, Perl, Posix, Emacs, подстановку оболочки).
Перл Perl.com Художественная лицензия или Генеральная общественная лицензия GNU. Полная, центральная часть языка
PHP PHP.net PHP-лицензия Имеет две реализации, причем PCRE более эффективен по скорости.
POSIX С ( С ) Веб-публикация POSIX.1 Лицензировано соответствующей реализацией Поддерживает POSIX BRE и ERE. синтаксис
Питон python.org Лицензия Фонда программного обеспечения Python Python имеет две основные реализации: встроенную re и библиотеку регулярных выражений .
Руби ruby-doc.org Стандартная общественная лицензия библиотеки GNU Ruby 1.8, Ruby 1.9 и Ruby 2.0 и более поздние версии используют разные движки; Ruby 1.9 интегрирует Oniguruma, Ruby 2.0 и более поздние версии интегрируют Onigmo, ответвление Oniguruma.
Ржавчина docs.rs МОЯ лицензия Основной контейнер регулярных выражений не допускает обходных выражений. Есть привязка Онигурума, называемая ониг , которая делает это.
SAP ABAP SAP.com Собственный
Ткл tcl.tk Лицензия Tcl/Tk
(в стиле BSD)
Библиотека Tcl выполняет функцию библиотеки регулярных выражений.
Вольфрам Язык Вольфрам Исследования Собственный : можно бесплатно использовать в ограниченном масштабе на платформе разработки Wolfram.
XML-схема W3C Лицензировано соответствующей реализацией
XPath 3 / XQuery W3C Лицензировано соответствующей реализацией
  1. ^ «STD.regex — Язык программирования D — Digital Mars» .
  2. ^ «Дотнет/Корефкс» . Гитхаб . 16 февраля 2022 г.
  3. ^ «Дотнет/Корефкс» . Гитхаб . 16 февраля 2022 г.

Языковые особенности [ править ]

ПРИМЕЧАНИЕ. Приложение, использующее библиотеку для поддержки регулярных выражений, не обязательно поддерживает полный набор функций библиотеки, например, GNU grep использует PCRE, но не поддерживает просмотр вперед, хотя PCRE поддерживает.

Часть 1 [ править ]

Сравнение возможностей языка (часть 1)
Квантор «+» Отрицательные классы символов Нежадные квантификаторы
[Примечание 1]
Застенчивые группы
[Примечание 2]
Рекурсия смотреть вперед Посмотреть назад Обратные ссылки
[Примечание 3]
>9 индексируемых снимков
Boost.Регулярное выражение Да Да Да Да Да [Примечание 4] Да Да Да Да
Boost.Xpressive Да Да Да Да Да [Примечание 5] Да Да Да Да
CL-PPCRE Да Да Да Да Нет Да Да Да Да
Эмредактор Да Да Да Да Нет Да Да Да Нет
FREJ Нет [Примечание 6] Нет Некоторый [Примечание 6] Да Нет Нет Нет Да Да
GLib /GRegex Да Да Да Да Да Да Да Да Да
GNU команда Да Да Да Да Нет Да Да Да
Хаскелл Да Да Да Да Нет Да Да Да Да
РХП Да Да Да Да Нет Нет Нет Да Да
в отделении интенсивной терапии регулярное выражение Да Да Да Да Нет Да Да Да Да
Ява Да Да Да Да Нет Да Да Да Да
JavaScript ( ECMAScript ) Да Да Да Да Нет Да Да [Примечание 7] Да Да
JGsoft Да Да Да Да Нет Да Да Да Да
Два Да Да Некоторый [Примечание 8] Нет Нет Нет Нет Да Нет
.СЕТЬ Да Да Да Да Нет Да Да Да Да
OCaml Да Да Нет Нет Нет Нет Нет Да Нет
ПКРЕ Да Да Да Да Да Да Да Да Да
Перл Да Да Да Да Да Да Да Да Да
PHP Да Да Да Да Да Да Да Да Да
Питон Да Да Да Да Да [Примечание 9] Да Да Да Да
Qt /QRegExp Да Да Да Да Нет Да Нет Да Да
РЕ2 Да Да Да Да Нет Нет Нет Нет Да
Руби, Онигмо Да Да Да Да Да Да Да Да Да
ТРИ Да Да Да Да Нет Нет Нет Да Нет
Почему Да Да Да Да Нет Да Да Да Нет
РГКС Да Да Да Да Нет Да Да Да Да
Ткл Да Да Да Да Нет Да Да Да Да
TRegExpr Да ? Да ? ? ? ? ? ?
XML-схема Да Да Нет Нет Нет Нет Нет
XPath 3 / XQuery Да Да Да Да Нет Нет Нет Да Да
XRegExp Да Да Да Да Нет Да Да [Примечание 7] Да Да
  1. ^ Нежадные квантификаторы соответствуют как можно меньшему количеству символов вместо заданного по умолчанию. Обратите внимание, что многие старые механизмы, существовавшие до POSIX, были нежадными и вообще не имели жадных кванторов.
  2. ^ Застенчивые группы , также называемые группами без захвата, на которые нельзя ссылаться с помощью обратных ссылок; группы без захвата используются для ускорения сопоставления, когда к содержимому группы не требуется доступ в дальнейшем.
  3. ^ Обратные ссылки позволяют ссылаться на ранее сопоставленные группы в более поздних частях регулярного выражения и/или строки замены (где применимо). Например, ([ab]+)\1 соответствует «abab», но не соответствует «abaab».
  4. ^ «Синтаксис регулярных выражений Perl — 1.47.0» .
  5. ^ «Руководство пользователя – 1.47.0» .
  6. ^ Jump up to: Перейти обратно: а б В FREJ нет повторяющихся квантификаторов, но есть «необязательный» элемент, который ведет себя аналогично простому «?» квантификатор.
  7. ^ Jump up to: Перейти обратно: а б По состоянию на ES2018
  8. ^ Единственный нежадный квантификатор Lua - это -, который является нежадной версией *. У него нет нежадных версий + или ?; в первом случае нежадного эффекта можно добиться, повторяя токен, за которым следует -, но в последнем случае эквивалента нет.
  9. ^ Поддерживается только дополнительной библиотекой регулярных выражений .

Часть 2 [ править ]

Сравнение возможностей языка (часть 2)
Директивы
[Примечание 1]
Условные предложения Атомные группы
[Примечание 2]
Именованный захват
[Примечание 3]
Комментарии Встроенный код Юникода Поддержка свойств [3] Балансирующие группы
[Примечание 4]
Просмотры переменной длины
[Примечание 5]
Boost.Регулярное выражение Да Да Да Да Да Нет Некоторый [Примечание 6] Нет Нет
Boost.Xpressive Да Нет Да Да Да Нет Нет Нет Нет
CL-PPCRE Да Да Да Да Да Да Некоторый [Примечание 6] Нет Нет
Эмредактор Да Да ? ? Да Нет ? Нет Нет
FREJ Нет Нет Да Да Да Нет ? Нет Нет
GLib /GRegex Да Да Да Да Да Нет Некоторый [Примечание 6] Нет Нет
GNU команда Да Да ? Да Да Нет Нет Нет Нет
Хаскелл ? ? ? ? ? Нет Нет Нет Нет
РХП Да Да Нет Да Да Нет Нет Нет Нет
в отделении интенсивной терапии регулярное выражение Да Нет Да Да [Примечание 7] Да Нет Да Нет Нет
Ява Да Нет Да Да [Примечание 8] Да Нет Некоторый [Примечание 6] Нет Нет
JavaScript ( ECMAScript ) Нет Нет Нет Да Нет Нет Некоторый [Примечание 6] [Примечание 9] [4] Нет Да
JGsoft Да Да Да Да Да Нет Некоторый [Примечание 6] Нет Да
Два Нет Нет Нет Нет Нет Нет Нет Нет Нет
.СЕТЬ Да Да Да Да Да Нет Некоторый [Примечание 6] Да Да
OCaml Нет Нет Нет Нет Нет Нет Нет Нет Нет
ПКРЕ Да Да Да Да Да Да Да Нет Нет
Перл Да Да Да Да Да Да Да Нет Нет [Примечание 10]
PHP Да Да Да Да Да Нет Нет Нет Нет
Питон Да Да Да [Примечание 11] Да Да Нет Да [Примечание 12] Нет Да [Примечание 13]
Qt /QRegExp Нет Нет Нет Нет Нет Нет Нет Нет Нет
РЕ2 Да Нет ? Да Нет Нет Некоторый [Примечание 6] Нет Нет
Руби, Онигмо Да Да Да Да Да Нет Некоторый [Примечание 6] Нет Нет
Ткл Да Нет Да Нет Да Нет Да Нет Нет
ТРИ Да Нет Нет Нет Да Нет ? Нет Нет
Почему Да Нет Да Нет Нет Нет Нет Нет Да
РГКС Да Да Да Да Да Нет Да Нет Нет
XML-схема Нет Нет Нет Нет Нет Нет Да Нет Нет
XPath 3 / XQuery Нет Нет Нет Нет Нет Нет Да Нет Нет
XRegExp Только ведущий Нет Нет Да Да Нет Да Нет Да
  1. ^ Также известны как модификаторы флагов , модификаторы режимов или буквы опций . Пример шаблона: «(?i:test)».
  2. ^ Также называются независимыми подвыражениями .
  3. ^ Аналогично обратным ссылкам, но с именами вместо индексов.
  4. ^ Специальная функция, позволяющая сопоставлять сбалансированные конструкции без рекурсии.
  5. ^ Относится к возможности включения кванторов в просмотр назад, что делает их длину непредсказуемой.
  6. ^ Jump up to: Перейти обратно: а б с д и ж г час я Поддержка свойств Unicode может быть неполной (продукты постоянно обновляются!). Все будет неполным , когда будет выпущена новая версия Unicode, пока они не будут обновлены для соответствия.
  7. ^ Доступно с ICU55.
  8. ^ Доступно начиная с JDK7.
  9. ^ Поддержка и диапазон свойств зависят от реализации.
  10. ^ Экспериментальная поддержка добавлена ​​в версии 5.29.9.
  11. ^ Поддерживается только Python v3.11 и более поздних версий, а также дополнительной библиотекой регулярных выражений .
  12. ^ Может быть доступно только в библиотеке регулярных выражений при использовании с версиями Python после 3.3.
  13. ^ Поддерживается только дополнительной библиотекой регулярных выражений .

Возможности API [ править ]

Сравнение функций API
Встроенная UTF-16. поддержка [Примечание 1] Встроенная UTF-8. поддержка [Примечание 1] Многострочное сопоставление Частичное совпадение [Примечание 2]
Boost.Регулярное выражение Нет Нет Да Да
GLib /GRegex Да Да Да Да
РХП Да Да Нет Да
в отделении интенсивной терапии регулярное выражение Да Нет Да ?
Ява Да [Примечание 3] Да [Примечание 3] Да Да
.СЕТЬ Нет [Примечание 4] Да Да ?
ПКРЕ Да [Примечание 5] Да Да Да
Qt /QRegExp Да Нет Нет Да [Примечание 6]
Qt /QRegularExpression Да Да Да Да
Ткл Да Да [Примечание 7] Да ?
ТРИ Да Да Да ?
РГКС Нет Нет Да ?
wxWidgets :: wxRegEx [Примечание 8] Да Да Да ?
XRegExp Да Да Да Нет
  1. ^ Jump up to: Перейти обратно: а б Означает, что формат можно использовать внутри страны без явного преобразования.
  2. ^ Частичное совпадение всего регулярного выражения. Например, шаблон «.*END$» будет частично соответствовать любой строке, но только строкам, оканчивающимся на END полностью. [1] .
  3. ^ Jump up to: Перейти обратно: а б Поддерживает стандарт Unicode 15.0 с 2023 года . [2] .
  4. ^ Реализация использует исходную поддержку/функции UCS-2 , поэтому распознает всего только 64 КБ символов (по сравнению с UTF-16 1 112 064 символами ). Представитель разработчика Microsoft в 2010 году ответил на сообщение об ошибке «не будет исправлено». [3] .
  5. ^ Начиная с версии 8.30.
  6. ^ Частичное сопоставление выполняется неявно, требуя отдельного вызова matchedLength(), если точное совпадение не удалось.
  7. ^ Tcl включает в себя средства преобразования в UTF-8 и обратно.
  8. ^ wxRegEx использует любую системную библиотеку POSIX или, если она недоступна, а для режима Unicode использует Генри Спенсера . библиотеку

См. также [ править ]

Ссылки [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 09a0d53adb932b06300e339078847996__1713875460
URL1:https://arc.ask3.ru/arc/aa/09/96/09a0d53adb932b06300e339078847996.html
Заголовок, (Title) документа по адресу, URL1:
Comparison of regular expression engines - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)