Ich möchte eine C++ Regex, die "Bananen" oder "Pyjamas" aber nicht "Bananas2" oder "Bananaspayjamas" oder "Banane" oder im Grunde nichts anderes als die genau zwei Wörter entspricht. Also habe ich dieses:Ganzes Wort passend mit regex.h
#include <regex.h>
#include <stdio.h>
int main()
{
regex_t rexp;
int rv = regcomp(&rexp, "\\bbananas\\b|\\bpajamas\\b", REG_EXTENDED | REG_NOSUB);
if (rv != 0) {
printf("Abandon hope, all ye who enter here\n");
}
regmatch_t match;
int diditmatch = regexec(&rexp, "bananas", 1, &match, 0);
printf("%d %d\n", diditmatch, REG_NOMATCH);
}
und es gedruckt 1 1
, als gäbe es kein Spiel war. Was ist passiert? Ich versuchte auch \bbananas\b|\bpajamas\b
für meine Regex und das scheiterte auch.
Ich fragte Whole-word matching using regex über Std :: Regex, aber Std :: Regex ist schrecklich und langsam, also versuche ich regex.h.
Ich verstehe nicht, warum das wird downvoted. Es ist eine kleine, nette, in sich abgeschlossene Frage mit kompilierendem, minimalem Code, der das Problem erklärt. Darüber hinaus hat das OP die Dokumentation zumindest oberflächlich gelesen. ** Was wollen die Leute noch?! ** –
Hasser werden hassen –
Ich verstehe auch nicht. Die * Frage * ist nicht schlecht. – Bathsheba