Легкий парсер регулярных выражений

Я хотел бы использовать парсер Regex, чтобы помочь в некоторой обработке строк в приложении C. В идеале я ищу что-нибудь легкое и с открытым исходным кодом. Целевая платформа - это встроенная система, поэтому мы стремимся максимально сэкономить, в частности, за счет потребления памяти. Я нашел несколько вариантов в Интернете, но мне было интересно, может ли кто-нибудь сделать дополнительные предложения, которые могут помочь в этом конкретном контексте.

Большое спасибо,

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
0
7 868
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вам не требуется полнофункциональная реализация регулярного выражения (а похоже, что вам этого не нужно), то код, написанный Брайаном Керниганом и Робом Пайком, выделенный в Красивый код, вероятно, будет работать для ваших нужд. Я нашел статью доктора Добба, который, как мне кажется, является источником кода, который фигурирует в книге.

Ответ принят как подходящий

Сцинтилла, компонент текстового редактора с открытым исходным кодом, использует Двигатель RE Озана С. Йигита

Он был выбран, потому что он является общественным достоянием (так что не обременяет лицензию) и очень легкий. Но он немного ограничен ... Как бы то ни было, RESearch.cxx использует немного более современный код (преобразованный в C++, но его не должно быть сложно преобразовать обратно в C) с некоторыми небольшими расширениями, сделанными мной (поддержка \ d \ s \ w и т. д.).

Есть несколько альтернатив, например Библиотеки регулярных выражений Генри Спенсера.

Если подумать, движок регулярных выражений Lua (в строковой библиотеке, реализация gsub среди прочего), вероятно, тоже быстрый и маленький, как и сам язык. У него есть свои особенности и ограничения, но он очень удобен.

Побочный проект LPeg может быть интересной альтернативой RE, он по-прежнему легкий, но мощный.

Спасибо за подробности ... Думаю, пока я собираюсь использовать RESearch.cxx. Он делает то, что мне нужно, и, кажется, делает это эффективно. Спасибо!

Andrew Flanagan 03.12.2008 21:06

Учитывая ваши легковесные требования, я бы порекомендовал Библиотека регулярных выражений Генри Спенсера, который реализует Ароматизаторы регулярных выражений POSIX BRE и ERE. Это стандартные разновидности регулярных выражений, с которыми ваши пользователи, вероятно, уже знакомы.

Другие вопросы по теме