lua lrexlib regex optional match group

79 views
Skip to first unread message

Eugene Prokopiev

unread,
Feb 1, 2019, 7:45:32 AM2/1/19
to tarantool-ru
Здравствуйте!

У меня есть табличка с кучей регулярных выражений с опциональной и вложенной матч-группой (и менять их при переезде очень нежелательно). Эти выражения отлично работают в perl:

$ perl -e 'print "yes\n" if "234" =~ "([0]?1)?2[3-4]{2}"'
yes


и неважно в tarantool:

tarantool> rex = require('rex_pcre2')
---
...

tarantool> rex.match('234','([0]?1)?2[3-4]{2}')
---
- false

...


Перебрал все опакеченные реализации:

$ rpm -qa | grep tarantool-lrexlib
tarantool-lrexlib-posix-2.9.0.5-1.el7.centos.x86_64
tarantool-lrexlib-pcre-2.9.0.5-1.el7.centos.x86_64
tarantool-lrexlib-pcre2-2.9.0.5-1.el7.centos.x86_64
tarantool-lrexlib-oniguruma-2.9.0.5-1.el7.centos.x86_64
tarantool-lrexlib-gnu-2.9.0.5-1.el7.centos.x86_64


Результат одинаков. Куда бы еще посмотреть?

Alexander Turenko

unread,
Feb 1, 2019, 9:31:43 AM2/1/19
to tarant...@googlegroups.com
tarantool> rex.new('([0]?1)?2[3-4]{2}', rex.flags().NO_JIT):match('234')
---
- '234'
...

Не знаю, почему с jit работает некорректно. Возможно, это баг в libpcre2. Можно попробовать зарепортить: https://bugs.exim.org/enter_bug.cgi?product=PCRE

Еще можно попробовать другую обертку над libpcre2: https://github.com/igormunkin/lua-re (но валидация там недокручена).

WBR, Alexander Turenko.


--
Вы получили это сообщение, поскольку подписаны на группу "tarantool-ru".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес tarantool-ru...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Alexander Turenko

unread,
Feb 1, 2019, 9:38:39 AM2/1/19
to tarant...@googlegroups.com
Кстати, еще может быть не совсем очевидным моментом,
что нужно руками поставить флаги UTF (UTF8 для libpcre)
и UCP, чтобы матчить с поддержкой юникода в libpcre2.

WBR, Alexander Turenko.

Eugene Prokopiev

unread,
Feb 4, 2019, 1:54:33 AM2/4/19
to tarantool-ru
Спасибо! Я попробовал - без JIT производительность для меня выходит вполне приемлемая, так что можно жить

пятница, 1 февраля 2019 г., 17:31:43 UTC+3 пользователь Alexander Turenko написал:
Reply all
Reply to author
Forward
0 new messages