我想将HDMI
与字符串>*sour=?#*SOUR=HDMI#
隔离开来(HDMI
有所不同,并且长度可以不同)。我想出了这个正则表达式来做到这一点:(?<=SOUR=)[^#]*
。使用this在线正则表达式测试器,我确认这实际上是有效的。
在我的Arduino代码中,我正在使用Nick Gammon's RegExp library。我遵循了Nick的documentation,此代码可以正常运行并找到两个匹配项,就像在他的示例中一样。但是,当我插入上面的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 () {}
答案 0 :(得分:1)
您使用的库不支持后向。
您可以使用捕获小组来解决问题:
char result = ms.Match ("SOUR=([^#]*)");