Форум программистов, компьютерный форум, киберфорум
Rust
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для pgb
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232

Своя реализация регулярных выражений. Реалити разработка, как говорится учитесь пока я жив :)

16.06.2024, 15:01. Показов 3723. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.06.2024, 15:01
Ответы с готовыми решениями:

Реализация алгоритма поиска в http ответе с помощью регулярных выражений
На входе: 1--------------------------------------------------------------------------------------- HTTP/1.0 401 Unauthorized ...

Как оптимизировать применение регулярных выражений
Как оптимизировать следующий код? string a2 = Regex.Replace(x, p, @&quot;$4&quot;, RegexOptions.IgnoreCase); string a3 = Regex.Replace(x, p,...

Как происходит проверка регулярных выражений в Regex.IsMatch?
Не разберусь что-то никак. Вот простой пример: public bool IsCyrillic(string pattern) { Regex rgx =...

21
Заблокирован
23.06.2024, 14:23
Студворк — интернет-сервис помощи студентам
Помню какой-то популярный фреймворк на расте, где парсер был написан на racket. Использовал языки по назначению. Вот что значит таргетирование)
2
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,018
24.06.2024, 13:12
Цитата Сообщение от pgb Посмотреть сообщение
на деле я реализую всё задуманное
Как там фреймворк поживает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2024, 13:12
Помогаю со студенческими работами здесь

Объясните, как работает грамматика регулярных выражений ECMAScript
Читаю раздел Alternatives документации по грамматике ECMAScript и не понимаю ни описание механизма работы данной реализации регулярных...

Как найти и заменить подстроку - как есть, без регулярных выражений
Как найти и заменить подстроку - как есть, без регулярных выражений? Уже неделю копаю, но ничего толкового не накопал... Прошу помощи. ...

Как с помощью регулярных выражений можно разделить строку на подстроки?
Всем привет. Как с помощью регулярных выражений можно разделить строку на подстроки? Имеется обычная строка(достаточно большая), необходимо...

Как преобразовать текстовый файл в html с помощью регулярных выражений?
Напишите сценарий, с помощью регулярных выражений преобразующий текстовый файл, заданный аргументом командной строки, в html-файл. ...

Как преобразовать текстовый файл в html с помощью регулярных выражений?
это АНРЕАЛ ребята Напишите сценарий, с помощью регулярных выражений преобразующий текстовый файл, заданный аргументом командной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru