การใช้เรกุลาร์เอ็กเพรสชัน

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 หลังจากติดตั้งไลบรารีแล้ว คุณสามารถใช้งานได้ดังนี้:

  1. การติดตั้ง: ไลบรารี regex อาจไม่พร้อมใช้งานใน Arduino Library Manager โดยทันที ดังนั้นคุณอาจจำเป็นต้องติดตั้งด้วยตนเอง โดยดาวน์โหลดจากแหล่งที่น่าเชื่อถือและเพิ่มเข้าไปในโฟลเดอร์ไลบรารี Arduino ของคุณ

  2. ตัวอย่างการใช้งาน: สมมติว่าไลบรารีมีฟังก์ชันที่คล้ายคลึงกับการดำเนินการของ regex มาตรฐาน คุณอาจใช้งานมันดังนี้:

#include <regex.h>

void setup() {
  Serial.begin(9600);
  while (!Serial); // รอจนกว่า Serial จะพร้อม
  
  regex_t reg;
  const char* pattern = "[0-9]+"; // ตรงกับลำดับของตัวเลข
  regcomp(&reg, pattern, REG_EXTENDED);
  
  const char* test_str = "Sensor value: 12345";
  
  regmatch_t matches[1];
  if (regexec(&reg, 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(&reg); // ปล่อยหน่วยความจำที่จัดสรรไว้สำหรับ regex
}

void loop() {
  // ใส่โค้ดหลักของคุณที่นี่ เพื่อทำงานซ้ำๆ:
}

หมายเหตุ: ไวยากรณ์และฟังก์ชันเฉพาะที่ใช้ที่นี่คือเพื่อการอธิบายเท่านั้น และอาจแตกต่างตามรายละเอียดการดำเนินการจริงของไลบรารี regex ที่คุณเลือก ควรอ้างอิงเอกสารของไลบรารีเสมอเพื่อข้อมูลที่แม่นยำและอัปเดต.