我有一个字符串列表:
我想过滤掉所有字符串:
我的正则表达式是'(?成本)价格',但它可以匹配第三个字符串'CostPrice',为什么?什么是正确的正则表达式?
经过一番调查,我知道“前瞻”意味着什么。这意味着看起来正确,所以类似的lookbehind意味着向左看。
正确的正则表达式应该是负面的后瞻性正则表达式:
var arr = ["a", cond && "bar"];
arr.filter( e => e)
试一试:https://regex101.com/r/m3238r/1
不幸的是,c ++ 11不支持lookbehind。提升正则表达式。 http://www.boost.org/doc/libs/1_50_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html
答案 0 :(得分:1)
不久之后,我会回答(在我看来)愚蠢的解决方案(必须有更好的解决方案:P)。
((?!Cost)....|^.{0,3})Price
如果前面有4个字符(至少),请确保它不是Cost
。或者,请确保Price
之前不超过3个字符。