रेगुलर एक्सप्रेशन्स का उपयोग करना

Arduino:
रेगुलर एक्सप्रेशन्स का उपयोग करना

कैसे:

अर्डुइनो में इसके मानक पुस्तकालय में सीधे रेगेक्स के लिए बिल्ट-इन समर्थन नहीं है। हालांकि, आप साधारण पैटर्नों के लिए बुनियादी स्ट्रिंग फंक्शन्स का उपयोग करके रेगेक्स-जैसी कार्यक्षमता प्राप्त कर सकते हैं, या अधिक जटिल जरूरतों के लिए, एक तृतीय-पक्ष पुस्तकालय जैसे 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 जैसी पुस्तकालय पर विचार कर सकते हैं। पुस्तकालय को स्थापित करने के बाद, आप इसका उपयोग निम्नानुसार कर सकते हैं:

  1. स्थापना: regex पुस्तकालय अर्डुइनो लाइब्रेरी मैनेजर में सीधे उपलब्ध नहीं हो सकता है, इसलिए आपको इसे एक विश्वसनीय स्रोत से डाउनलोड करके और अपने अर्डुइनो पुस्तकालयों के फ़ोल्डर में जोड़ने की आवश्यकता हो सकती है।

  2. उदाहरण उपयोग: मानते हुए कि पुस्तकालय मानक रेगेक्स क्रियान्वयनों के समान कार्यक्षमताएं प्रदान करता है, आप इसका उपयोग निम्नानुसार कर सकते हैं:

#include <regex.h>

void setup() {
  Serial.begin(9600);
  while (!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); // रेगेक्स के लिए आवंटित मेमोरी को मुक्त करें
}

void loop() {
  // अपने मुख्य कोड को यहाँ रखें, बार-बार चलाने के लिए:
}

नोट: यहाँ उपयोग किया गया वाक्यविन्यास और विशिष्ट फंक्शन्स प्रदर्शनात्मक उद्देश्यों के लिए हैं और आपके द्वारा चयनित regex पुस्तकालय के वास्तविक कार्यान्वयन विवरणों के आधार पर भिन्न हो सकते हैं। सटीक और अद्यतन जानकारी के लिए हमेशा पुस्तकालय के दस्तावेज़ीकरण को संदर्भित करें।