Arduino:
Використання регулярних виразів
Як:
Arduino не має вбудованої підтримки regex безпосередньо у своїй стандартній бібліотеці. Однак, ви можете досягнути regex-подібної функціональності для простих шаблонів, використовуючи базові функції рядків, або для більш складних потреб, інтегрувати сторонню бібліотеку, таку як regex
.
Базове співставлення рядків без Regex
Для базових потреб, як-от знаходження підрядка, ви можете використовувати функцію String.indexOf()
:
String data = "Sensor value: 12345";
int index = data.indexOf("value:");
if (index != -1) {
String value = data.substring(index + 6).trim();
Serial.println(value); // Виводить: 12345
}
Використання сторонньої бібліотеки для Regex
Для обробки більш складних шаблонів ви можете розглянути використання бібліотеки, як-от regex
. Після встановлення бібліотеки ви можете використовувати її наступним чином:
Встановлення: Бібліотека
regex
може не бути відразу доступна в Менеджері Бібліотек Arduino, тому вам може знадобитися вручну встановити її, завантаживши з надійного джерела та додавши до папки бібліотек Arduino.Приклад Використання: Припускаючи, що бібліотека надає функціональність, схожу на стандартні імплементації regex, ви могли б використовувати її наступним чином:
#include <regex.h>
void setup() {
Serial.begin(9600);
while (!Serial); // Чекаємо, поки Serial буде готовий
regex_t reg;
const char* pattern = "[0-9]+"; // Відповідає послідовності цифр
regcomp(®, pattern, REG_EXTENDED);
const char* test_str = "Sensor value: 12345";
regmatch_t matches[1];
if (regexec(®, test_str, 1, matches, 0) == 0) {
// Витягнути та надрукувати відповідну частину
int start = matches[0].rm_so;
int end = matches[0].rm_eo;
char match[end-start+1];
strncpy(match, test_str + start, end-start);
match[end-start] = '\0';
Serial.print("Знайдено співпадіння: ");
Serial.println(match); // Виводить: 12345
} else {
Serial.println("Співпадінь не знайдено");
}
regfree(®); // Звільнити виділену пам'ять для regex
}
void loop() {
// помістіть ваш основний код сюди, для постійного виконання:
}
Примітка: Синтаксис та конкретні функції, які використовуються тут, наведені для наочності і можуть відрізнятись в залежності від деталей реалізації бібліотеки regex
, яку ви оберете. Завжди звертайтеся до документації бібліотеки за точною та актуальною інформацією.