Я хочу выделить HDMI
из строки >*sour=?#*SOUR=HDMI#
(HDMI
может быть разной длины). Я придумал это регулярное выражение, чтобы сделать это: (?<=SOUR=)[^#]*
. Используя этот онлайн тестер регулярных выражений, я подтвердил, что это на самом деле работает.
В моем коде Arduino я использую Библиотека RegExp Ника Гэммона . Я следовал за документацией Ника , и этот код работает нормально и находит два совпадения, как в его примере. Однако, когда я вставляю свои параметры Target
и Match
выше, метод Match
не возвращает совпадений (т. Е. Serial.println("no match")
выполняется). Любой совет?
Вот мой код:
#include <Regexp.h>
void setup ()
{
Serial.begin(115200);
MatchState ms;
ms.Target (">*sour=?#*SOUR=HDMI#");
char result = ms.Match ("(?<=SOUR=)[^#]*");
if (result == REGEXP_MATCHED)
{
char buf [100]
Serial.print ("Captures: ");
Serial.println (ms.level);
for (int j = 0; j < ms.level; j++)
{
Serial.print ("Capture number: ");
Serial.println (j, DEC);
Serial.print ("Text: '");
Serial.print (ms.GetCapture (buf, j));
Serial.println ("'");
}
}
else if (result == REGEXP_NOMATCH)
{
Serial.println("no match");
}
}
void loop () {}