Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Поиск с регулярным выражением |
Автор: supercelt 17.3.2023, 23:21 | ||||||
Добрый вечер! Пишу на СИ. Суть вот в чём. Есть строка
Мне надо найти подстроку \r\n+CME ERROR:58\r\n. Но вместо 58 может быть любое число. Понятно что можно применить регулярки. Но возникла другая проблема. Есть библиотека PCRE2. Я ее скачал. Собрал с помощью CMAKE. Получились на выходе фалы, среди которых есть pcre2.h. Я его скопировал в MINGW\include. Но при компиляции вылетают ошибки, которые я мало понимаю что означают. Я не силён именно в сборках и внедрении библиотек. А мануал на английском по большей части и рассчитан на то что человек уже шарит хоть что-то в сборках. У меня такое ощущение что после сборки в CMAKE это всё надо еще как-то инсталлировать, а не просто скопировать заголовочный файл... Кстати при компиляции проекта вылетают следующие ошибки:
Мой код полностью:
Получается у меня основная проблема как искать с помощью регулярок или другой способ.... и если регулярки - оптимальное решение, то проблема выше - инсталляция библиотеки Спасибо большое если ответите. |
Автор: Oldshelf 18.3.2023, 05:11 |
Там, кажется, ещё надо соответствующие библиотеки скопировать в "MINGW\lib". Типа: "*.a". Добавлено через 2 минуты и 27 секунд ...и указать их явно в параметрах компоновщика, как, например, указана библиотека "-mwindows". |
Автор: supercelt 18.3.2023, 18:35 |
Там в файлах даже нет таких, с расширением .а |
Автор: Oldshelf 19.3.2023, 06:16 |
Не уверен, что поможет, но вот обсуждение подключения соответствующей статической библиотеки ("libpcre2-32.a") в проект: https://stackoverflow.com/questions/73631617/pcre2-include-a-static-library-in-c-cmake-project |
Автор: supercelt 19.3.2023, 19:31 | ||
Не помогло( |
Автор: Oldshelf 20.3.2023, 05:37 |
А есть ли вообще раздел "MINGW\lib"? Если - да, то там среди прочих библиотек есть что-то похожее на "pcre2"? |
Автор: YUENHOIFEF 26.3.2023, 07:06 | ||
Это не подстрока, а строка. Можно сравнивать шаблон с часть строки, а не со всей строкой, с помощью функции: strnstr(); +CME ERROR:58 +CME ERROR Ищешь подстроку в строке(выделено зеленым), и если совпало - выдергиваешь цифру(то что после : ) |
Автор: Oldshelf 27.3.2023, 05:02 |
Тогда необходимо сначала добавить каким-либо способом эту библиотеку в раздел "lib", например https://packages.msys2.org/base/mingw-w64-pcre2, а потом явно подключить в параметрах компоновщика. Хотя, кажется, эта библиотека должна появиться где-то после "cmake", вместе с "pcre2.h". |
Автор: YUENHOIFEF 27.3.2023, 11:11 |
supercelt, И тем не менее эта задача легко решаема без регулярных выражений. Читаешь текст построчно (если очень надо, пусть концом строки является \r\n, а не просто \n) Сравниваешь с шаблоном. Проверяешь - число ли в конце. Делов-то... Испоьзовать RegExp в Cи, как-то не так и что-то не то. ![]() Это мое мнение, не более. |