Пытаюсь написать regex выражение для адресов, у которых в одном блоке все символы повторяются (блоки вида :fff:, :33:, :d: ...).
Мне удалось сделать это для grep
grep -E ':([[:xdigit:]])\1{0,4}:'
Но майнер неправильно понимает "\1", и в итоге ищет блоки вида :a11:, :3111:, :f1:, :1111:.
Что я делаю не так?
Пытаюсь написать regex выражение для адресов, у которых в одном блоке все символы повторяются (блоки вида `:fff:, :33:, :d: ...`).
Мне удалось сделать это для grep
```
grep -E ':([[:xdigit:]])\1{0,4}:'
```
Но майнер неправильно понимает "\1", и в итоге ищет блоки вида `:a11:, :3111:, :f1:, :1111:`.
Что я делаю не так?
Привет. Сам удивлен подобному поведению. Вероятно, это особенность реализации стандартной библиотеки регулярных выражений C++, которая использована в sygcpp.
Не утешительный приз, конечно, но навскидку могу посоветовать только использование фиксированного вхождения вроде ":a{0,4}:b{0,4}:".
Если узнаю решение обнаруженного бага, напишу в это же обсуждение.
Привет. Сам удивлен подобному поведению. Вероятно, это особенность реализации стандартной библиотеки регулярных выражений C++, которая использована в sygcpp.
Не утешительный приз, конечно, но навскидку могу посоветовать только использование фиксированного вхождения вроде `":a{0,4}:b{0,4}:"`.
Если узнаю решение обнаруженного бага, напишу в это же обсуждение.
Ясно. Попробую использовать более статичное выражение, посмотрю, что по скорости.
Кстати о скорости. Думаю, стоит добавить опцию regexp & high, так как regexpы самые медленные, а добавление нижней планки высоты позволит добиться достойной скорости.
Для себя по быстрому допилил это, за одно отключив повышение минимальной высоты.
Ясно. Попробую использовать более статичное выражение, посмотрю, что по скорости.
Кстати о скорости. Думаю, стоит добавить опцию `regexp & high`, так как regexpы самые медленные, а добавление нижней планки высоты позволит добиться достойной скорости.
Для себя по быстрому допилил это, за одно отключив повышение минимальной высоты.
Добавил режим regexp & high, это mining mode 4. Доступен только из конфига (пока что, наверное). Отключение высоты добавил через define DISABLE_INCREASE - функция экзотическая, поэтому по умолчанию дефайн закомментирован.
При майнинге "регулярка-высота" логично и естественно сначала происходит проверка высоты, что ускоряет, как ты уже говорил, майнинг в этом режиме.
Добавил режим `regexp & high`, это mining mode `4`. Доступен только из конфига (пока что, наверное). Отключение высоты добавил через define DISABLE_INCREASE - функция экзотическая, поэтому по умолчанию дефайн закомментирован.
При майнинге "регулярка-высота" логично и естественно сначала происходит проверка высоты, что ускоряет, как ты уже говорил, майнинг в этом режиме.
Пытаюсь написать regex выражение для адресов, у которых в одном блоке все символы повторяются (блоки вида
:fff:, :33:, :d: ...
).Мне удалось сделать это для grep
Но майнер неправильно понимает "\1", и в итоге ищет блоки вида
:a11:, :3111:, :f1:, :1111:
.Что я делаю не так?
Привет. Сам удивлен подобному поведению. Вероятно, это особенность реализации стандартной библиотеки регулярных выражений C++, которая использована в sygcpp.
Не утешительный приз, конечно, но навскидку могу посоветовать только использование фиксированного вхождения вроде
":a{0,4}:b{0,4}:"
.Если узнаю решение обнаруженного бага, напишу в это же обсуждение.
Ясно. Попробую использовать более статичное выражение, посмотрю, что по скорости.
Кстати о скорости. Думаю, стоит добавить опцию
regexp & high
, так как regexpы самые медленные, а добавление нижней планки высоты позволит добиться достойной скорости.Для себя по быстрому допилил это, за одно отключив повышение минимальной высоты.
Добавил режим
regexp & high
, это mining mode4
. Доступен только из конфига (пока что, наверное). Отключение высоты добавил через define DISABLE_INCREASE - функция экзотическая, поэтому по умолчанию дефайн закомментирован. При майнинге "регулярка-высота" логично и естественно сначала происходит проверка высоты, что ускоряет, как ты уже говорил, майнинг в этом режиме.Спасибо
(Пожалуй, в notabug не хватает emoji под комментариями, чтобы например поблагодарить, не засоряя ветку бесполезными сообщениями)