Säännöllisten lausekkeiden käyttö

Arduino:
Säännöllisten lausekkeiden käyttö

Miten:

Arduino ei suoraan tue regexiä sen vakio-kirjastossa. Voit kuitenkin saavuttaa regexiä muistuttavaa toiminnallisuutta yksinkertaisille kuviolle käyttämällä perusmerkkijonofunktioita, tai monimutkaisempiin tarpeisiin integroimalla kolmannen osapuolen kirjaston, kuten regex.

Yksinkertainen merkkijonohaku ilman Regexiä

Perustarpeisiin, kuten alimerkkijonon löytämiseen, voit käyttää String.indexOf()-funktiota:

String data = "Sensor arvo: 12345";
int index = data.indexOf("arvo:");
if (index != -1) {
  String value = data.substring(index + 6).trim();
  Serial.println(value); // Tulostaa: 12345
}

Kolmannen osapuolen kirjaston käyttö Regexille

Monimutkaisempien kuvioiden käsittelyyn saatat harkita kirjastoa, kuten regex. Kirjaston asentamisen jälkeen voit käyttää sitä seuraavasti:

  1. Asennus: regex-kirjastoa ei ehkä ole suoraan saatavilla Arduino-kirjastohallinnassa, joten saatat joutua asentamaan sen manuaalisesti lataamalla luotettavasta lähteestä ja lisäämällä sen Arduinon kirjastoihisi.

  2. Esimerkkikäyttö: Olettaen, että kirjasto tarjoaa toiminnallisuuksia vastaavasti kuin standardit regex-toteutukset, saatat käyttää sitä seuraavasti:

#include <regex.h>

void setup() {
  Serial.begin(9600);
  while (!Serial); // Odota, että Serial on valmis
  
  regex_t reg;
  const char* pattern = "[0-9]+"; // Vastaa numerosarjaa
  regcomp(&reg, pattern, REG_EXTENDED);
  
  const char* test_str = "Sensor arvo: 12345";
  
  regmatch_t matches[1];
  if (regexec(&reg, test_str, 1, matches, 0) == 0) {
    // Poimi ja tulosta vastaava osa
    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("Löydetty vastaavuus: ");
    Serial.println(match); // Tulostaa: 12345
  } else {
    Serial.println("Vastaavuutta ei löydy");
  }
  
  regfree(&reg); // Vapauta regexille varattu muisti
}

void loop() {
  // laita pääkoodisi tähän, suoritetaan toistuvasti:
}

Huom: Tässä käytetty syntaksi ja tiettyjen funktioiden käyttö on esimerkinomaisia ja saattavat vaihdella valitsemasi regex-kirjaston todellisen toteutuksen yksityiskohtien mukaan. Viittaa aina kirjaston dokumentaatioon saadaksesi tarkkaa ja ajan tasalla olevaa tietoa.