Regexp
- Войдите на сайт для отправки комментариев
Сб, 03/02/2018 - 19:51
Здравствуйте, помогите новичку. Интересует реализация метода, принимающий строку и регулярное выражение, возвращающее стринг. (Понимаю что стринг не любят тут, но памяти в ESP пока хватает, да я вникаю только)
Разбирал пример по ссылке:
http://forum.arduino.cc/index.php/topic,59917.html
Заинтересовал следующий скетч:
#include <Regexp.h> void setup () { Serial.begin (115200); Serial.println (); MatchState ms; char * str = "RGB:123"; ms.Target (str); unsigned int index = 0; char buf [100]; while (true) { char result = ms.Match ("%a", index); if (result == REGEXP_MATCHED) { Serial.println ("-----"); Serial.print ("Matched on: "); Serial.println (ms.GetMatch (buf)); Serial.println ("Captures:"); for (int j = 0; j < ms.level; j++) Serial.println (ms.GetCapture (buf, j)); // move past matching string index = ms.MatchStart + ms.MatchLength; } // end of match else break; // no match or regexp error } // end of while } // end of setup void loop () {}
Теперь вопрос, по скетчу:
char * str = "RGB:123";
почему в строке если заменить значение "RGB:123" на переменную типа String с этим же значением,
String data = "RGB:123";
char * str = data;
то выскакивает ошибка компилятора: cannot convert 'String' to 'char*' in initialization
в чём причина ? Как использовать строку ?
использовать так:
ms.Target (data.c_str());
Ну а вообще советую отказаться от String и перейти на char* - тогда и не придется искать другие библиотеки.
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
А Алгоритм в кратце на словах расскажите тогда, если не затруднит ? Как делать ? А там дальше сам копать буду. У меня просто идея парсить регулярным выражением данные, в 2000 байт, которые с RS-232 придут. Думал в строку загнать, пробежаться регулярными, штук 20 их будет и присвоить переменным, и отослать как обработанное через ВайФай.
А как без стринг ? В массив Чар загонять ? А как потом искать ?
спс буду знать.
А как без стринг ? В массив Чар загонять ? А как потом искать ?
Странный вопрос. Библиотека RegExp как раз рассчитана на массив Чар - значит она и искать может, не находите?
Спасибо, разобрался