|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|
Своя реализация регулярных выражений. Реалити разработка, как говорится учитесь пока я жив :)16.06.2024, 15:01. Показов 4029. Ответов 21
Метки нет (Все метки)
Итак, для разработки своих будущих проектов мне нужен быстрый парсинг с удобным для меня функционалом. Есть же регулярные выражения скажете вы, да есть, но тоже самое можно сделать намного проще и удобнее и это я вам докажу в этой теме. Кроме того при использовании регулярных выражений из стандартной библиотеки подключаются куча всего разного, что увеличивает исходный код ну и скорость я думаю от этого тоже замедляется. Короче споры тут не уместны я приступаю к разработке своей реализации регулярных выражения на Rust.
На разработку может уйти некоторое время, т.к. я только начинаю писать на Rust, приходится попутно всё изучать, кроме того у меня есть и другие дела, проекты, так же при решении тех или иных микро задач будут возникать трудности, которые я обычно обдумываю занимаясь другими делами, даже когда отдыхаю, смотрю например кино и тд., мне может придти мысль как что можно сделать и затем проверяю это, поэтому всё будет делаться по мере возможности. Но думаю за пару месяцев +- управлюсь. Назову модуль пока notch, потом название возможно поменяется. Первоначально надо придумать синтаксис для поиска подстрок: > - начало строки, в начале(как^); < - конец строки, в конце(как $); s - пробел(как \s); t - табуляция(как \t); n - (NL) новая строка(как \n); c - (CR) возврат каретки(как \r); i - число integer(как \d); f - число с точкой float; l - буква(как \w); L - заглавная буква; w - слово; W - слово заглавными буквами; m - спецсимвол; a - любой символ(как .); {text} - конкретный текст; [zzz] - возможные совпадения(подразумевается "или"), где zzz - шаблон; (zzz) - захват подстроки, где zzz - шаблон; * - ноль или более раз повторов; + - один или более раз повторов; *n - ноль или более раз, но не более n; +n - один или более раз, но не более n; :n - где n - количество раз повторов; ! - отрицание совпадения; | - или; ?zzz? - проверка, где zzz - шаблон #n - захваченная подстрока Данный синтаксис придумал только что при написании этого сообщения, возможно потом поменяю, что-то добавлю... Я сделал так чтобы было без использования управляющих символов \n,\r,\s,\w и тд. а использовались простые буквы, ведь это просто шаблон, в котором мы можем описать искомые символы своими значениями и синтаксисом для логики. Старался сделать так чтобы было привычно и более удобнее чем в существующих регулярных выражениях. Правда есть нюанс. Как указывать конкретный спецсимвол который используется в синтаксисе шаблона: *+:!|?#(){}[] Я над этим вопросом ещё подумаю, может выбрать какой либо спецсимвол после которого писать нужный, например ~: ~({нужный ~{мне~} текст}~) - то есть будет искаться "(нужный {мне} текст)" в круглых скобках с фигурными внутри конкретного текста ~#[iL]:4 - что будет соответствовать "#00AB" двухбайтному числу в шестнадцатеричной форме возможно так и сделаю, но это не точно
1
|
|
| 16.06.2024, 15:01 | |
|
Ответы с готовыми решениями:
21
Реализация алгоритма поиска в http ответе с помощью регулярных выражений Как оптимизировать применение регулярных выражений
|
|
Заблокирован
|
|
| 23.06.2024, 14:23 | |
|
Помню какой-то популярный фреймворк на расте, где парсер был написан на racket. Использовал языки по назначению. Вот что значит таргетирование)
2
|
|
|
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
|
|
| 24.06.2024, 13:12 | |
|
0
|
|
| 24.06.2024, 13:12 | |
|
Помогаю со студенческими работами здесь
22
Объясните, как работает грамматика регулярных выражений ECMAScript
Как с помощью регулярных выражений можно разделить строку на подстроки? Как преобразовать текстовый файл в html с помощью регулярных выражений? Как преобразовать текстовый файл в html с помощью регулярных выражений? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|