Я хочу регулярное выражение C++, которое соответствует «бананам» или «пижаме», но не «бананам2» или «бананаспаямасам» или «бананам» или вообще ничего, кроме этих двух точных слов. Поэтому я сделал это:Подгонка целых слов с использованием регулярных выражений
#include <regex>
int main(int argc, char** argv) {
static const std::regex bp = std::regex("\bbananas\b|\bpajamas\b");
printf("%d\n", std::regex_match("bananas", bp));
}
За исключением печати 0! Что дает? /\bbananas\b|\bpajamas\b/.test('bananas')
дает мне true
в Javascript, так что же отличается от C++?
Сделайте двойной '' '' '' в '\ b'. В настоящее время вы указываете обратный символ. Поскольку вы указываете строку конструктору regex, вам нужно убедиться, что конструктор регулярных выражений видит правильную строку - если вы хотите, чтобы конструктор видел '\ b' или' \ s', вам нужно написать '' \\ b "' или '' \\ s "' в строке. Существует также строчная строковая конструкция в C++ 11, IIRC – nhahtdh
Slick! Это сработало. –