LINUX.ORG.RU

SRELL 2.930 — библиотека для С++, реализующая работу ECMAScript-совместимых регулярных выражений

 , , , ,


0

1

SRELL – это std::regex-like library.

Особенности:

  • header-only;
  • ECMAScript-совместимые регулярные выражения;
  • дизайн а-ля std::regex;
  • поддержка типов char8_t, char16_t и char32_t для C++11 и более поздних версий стандарта.

Более подробное описание доступно на сайте автора.

История изменений: англ./яп.

Постоянная ссылка на актуальную версию: скачать.

Автор почему-то стесняется (да, так и написал!) публиковать библиотеку в публичных репозиториях, поэтому есть моё GitHub-зеркало (с Unicode 14.0, для бета-тестирования).

После пары писем автор согласился, что это будет полезно для увеличения популярности SRELL. Посмотрим. :)

Пока же библиотека добавлена в regex-benchmark, но на момент написания новости бенчмарков ещё нет.

>>> Подробности



Проверено: cetjs2 ()

Самые быстрые регулярки сегодня это: https://github.com/hanickadot/compile-time-regular-expressions

Возможно их включат в стандарт вместо текущего std::regex, по крайней мере предложения такие в комитет поступали…

Так что нужно искать какие-то плюсы в своей либе именно с проектом Ханны Дусиковой.

Или если плюсов не оказалось, то забивать на проект :)

fsb4000 ★★★★★ ()
Ответ на: комментарий от fsb4000

именно в сравнении с проектом

Fixed. Строго говоря, в случае динамически генерерируемых регулярок сравнивать надо таки со `std::regex’. А зашёл я сюда ради этого камента от @ox55ff, коий неистаго плюсую.

dimgel ★★★★ ()
Ответ на: комментарий от fsb4000

Самые быстрые регулярки сегодня это:

Или https://github.com/mrpi/compile-time-verbal-expressions для чего-то совсем простого.

Но в CTRE куча ограничений; для compile-time уж лучше PEGTL или активно разрабатываемый lexy.

dataman ()
Ответ на: комментарий от dataman

Я вот тоже часто думаю, что в compile-time как-то парсеры чаще нужны, чем регулярные выражения. Скорее всего народ просто по привычке фигачит…

За наводки спасибо, гляну. Вроде пока по привычке X3 (экс-три, а не хезе) гоняю, если что по мелочи надо сконвертмровать/распарсить.

anonymous ()
Ответ на: комментарий от fluorite

Часть результатов (вырезано из 8 Кб файла):

Regex: 'Twain'
[      pcre] time:     2.8 ms (+/-  1.7 %), matches:      811
[  pcre-dfa] time:     3.2 ms (+/-  1.2 %), matches:      811
[  pcre-jit] time:     1.2 ms (+/-  1.3 %), matches:      811
[       re2] time:     1.5 ms (+/-  4.2 %), matches:      811
[      onig] time:    13.7 ms (+/-  0.7 %), matches:      811
[       tre] time:   196.9 ms (+/-  2.5 %), matches:      811
[     hscan] time:     1.1 ms (+/-  2.3 %), matches:      811
[     srell] time:    12.5 ms (+/-  0.4 %), matches:      811
-----------------
Regex: '[a-z]shing'
[      pcre] time:   373.1 ms (+/-  1.5 %), matches:     1540
[  pcre-dfa] time:   496.1 ms (+/-  6.6 %), matches:     1540
[  pcre-jit] time:     1.7 ms (+/-  2.0 %), matches:     1540
[       re2] time:    24.2 ms (+/-  2.2 %), matches:     1540
[      onig] time:    11.5 ms (+/-  1.1 %), matches:     1540
[       tre] time:   284.5 ms (+/-  2.0 %), matches:     1540
[     hscan] time:     3.1 ms (+/-  1.0 %), matches:     1540
[     srell] time:   129.0 ms (+/-  0.2 %), matches:     1540
-----------------
Regex: 'Huck[a-zA-Z]+|Saw[a-zA-Z]+'
[      pcre] time:    19.2 ms (+/- 30.0 %), matches:      262
[  pcre-dfa] time:    15.8 ms (+/- 26.9 %), matches:      262
[  pcre-jit] time:     1.8 ms (+/-  0.3 %), matches:      262
[       re2] time:    23.5 ms (+/-  1.0 %), matches:      262
[      onig] time:    27.8 ms (+/-  1.6 %), matches:      262
[       tre] time:   280.5 ms (+/-  2.5 %), matches:      262
[     hscan] time:     1.7 ms (+/-  0.9 %), matches:      977
[     srell] time:    31.7 ms (+/-  2.2 %), matches:      262
-----------------
Regex: '\b\w+nn\b'
[      pcre] time:   507.9 ms (+/-  0.7 %), matches:      262
[  pcre-dfa] time:   653.1 ms (+/-  1.1 %), matches:      262
[  pcre-jit] time:    64.8 ms (+/-  1.3 %), matches:      262
[       re2] time:    23.7 ms (+/-  0.7 %), matches:      262
[      onig] time:   478.5 ms (+/-  1.3 %), matches:      262
[       tre] time:   457.0 ms (+/-  1.3 %), matches:      262
[     hscan] time:    91.2 ms (+/-  4.7 %), matches:      262
[     srell] time:   289.7 ms (+/-  0.1 %), matches:      262

dataman ()