【发布时间】:2017-07-04 14:19:17
【问题描述】:
我有一个字符串列表:
- 参考价格
- 参考当前价格
- 成本价格
- 平均成本价格 ...
我想过滤掉所有符合以下条件的字符串:
- 包含“价格”,
- 但不包含“CostPrice”
我的正则表达式是'(?!Cost)Price',但它可以匹配第三个字符串'CostPrice',为什么?什么是正确的正则表达式?
经过一番调查,我知道“前瞻”是什么意思。它的意思是向右看,所以类似地向后看的意思是向左看。
正确的正则表达式应该是否定的后向正则表达式:
(?<!Cost)Price
试试看:https://regex101.com/r/m3238r/1
很遗憾,c++11 不支持后视。 Boost 正则表达式可以。 http://www.boost.org/doc/libs/1_50_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html
【问题讨论】:
-
你需要一个“向后看”,而 C++11 显然不支持。
-
@ClasG 是否可以在我的情况下使用 c++11 正则表达式?