我想要一个匹配"香蕉"的C ++正则表达式或者"睡衣"但不是"香蕉2"或" bananaspajamas"或"香蕉"或者基本上除了那两个字以外的任何东西所以我这样做了:
#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')
在Javascript中给了我true
,那么C ++有什么不同呢?
答案 0 :(得分:2)
Regex string should have \bbananas\b|\bpajamas\b
. but in c++, "\bbananas\b|\bpajamas\b"
return bbananasb|bpajamasb
. for this reason, you have to use extra \
with \
like "\\bbananas\\b|\\bpajamas\\b"
答案 1 :(得分:0)
您不应该使用正则表达式。如果你想知道一个字符串是否是两个单词之一,只需使用直接的相等比较:
if (str == "bananas" || str == "pajamas") {
// OK
}
如果您有更多可能性,可以使用某种集合:
const std::unordered_set<std::string> words {
"bananas",
"pajamas",
"papayas"
};
if (words.find(str) != words.end()) {
// OK
}