Regex c++11正则表达式先行排除字

Regex c++11正则表达式先行排除字,regex,c++11,Regex,C++11,我有一个字符串列表: 参考价格 参考当前价格 成本价 平均成本价 ... 我想过滤掉所有以下字符串: 包含“价格”, 但不包含“成本价” 我的正则表达式是'?!“CostPrice”,但它可以匹配第三个字符串“CostPrice”,为什么?正确的正则表达式是什么 经过一番调查,我知道“前瞻”是什么意思了。它的意思是向右看,同样地,向后看意味着向左看 正确的正则表达式应为负lookbehind正则表达式: (?<!Cost)Price 试试看: 不幸的是,c++11不支持查找。boostr

我有一个字符串列表:

参考价格 参考当前价格 成本价 平均成本价 ... 我想过滤掉所有以下字符串:

包含“价格”, 但不包含“成本价” 我的正则表达式是'?!“CostPrice”,但它可以匹配第三个字符串“CostPrice”,为什么?正确的正则表达式是什么

经过一番调查,我知道“前瞻”是什么意思了。它的意思是向右看,同样地,向后看意味着向左看

正确的正则表达式应为负lookbehind正则表达式:

(?<!Cost)Price
试试看:

不幸的是,c++11不支持查找。boostregex确实如此。
我必须马上采取行动,我将用一个我认为愚蠢的解决方案来回答:肯定有更好的解决方案:p

((?!Cost)....|^.{0,3})Price
如果前面至少有4个字符,请确保它不是成本。或者,确保价格前面的字符不超过3个


.

您需要查看后面的内容,而C++11显然不支持这些内容。@ClasG是否可以在我的案例中使用C++11正则表达式?很好的解释和文档。谢谢不知道有没有更好的。可以简化为?!成本{4}| ^{0,3}价格:-@user1633272 True。这使得它的性能更好,但在我看来,当正则表达式的长度没有缩短时。。。。更容易阅读/理解。