【发布时间】:2015-06-26 04:08:20
【问题描述】:
我想要一个匹配“bananas”或“pajamas”但不匹配“bananas2”或“bananaaspajamas”或“banana”或基本上除了这两个词之外的任何内容的 C++ 正则表达式。所以我这样做了:
#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++ 有什么不同?
【问题讨论】:
-
将
\加倍\b。目前,您指定退格字符。由于您正在为正则表达式构造函数指定一个字符串,因此您需要确保正则表达式构造函数看到正确的字符串 - 如果您希望构造函数看到\b或\s,则需要编写"\\b"或"\\s"在字符串中。 C++11 中还有原始字符串构造,IIRC