2014-09-11 36 views
0

好的我正在处理一些JavaScript代码的行,并且希望使用负面预览消除行,如果它包含特定的短语,但我似乎仍然抓住行和regexbuddy和其他人显示匹配而且我不知道为什么JavaScript REGEX负面展望混乱

^This (\w+) (\w+) was built in (\d+). (.+?).(?! This car has a salvage title.)$ 

所以我要抓住那些对变化,从而对(。+?)匹配一些不同的第二句值。 什么,我不希望是,如果行包含有参考打捞标题

SO

This Honda Accord was built in 1986. This car has 3 accidents. This car has a salvage title. 

不应该匹配,因为前面的负外观应该失败

This Honda Accord was built in 1986. This car has 3 accidents. 

应该匹配,但我得到两个匹配。我只是误解了未来的负面看法,还是我对它进行了错误的格式化?

+0

不确定它是否与问题有关,但你需要转义你想匹配的'.'字符。 – Barmar 2014-09-11 05:09:32

+0

我试过用\。并且仍然失败。 – user3763307 2014-09-11 05:10:42

回答

1
…(?! This car has a salvage title.)$ 

你已经把负先行权字符串结束前。它会总是不匹配那里(即成功)。这毕竟是一种向前看,而不是向后看,在字符串末尾偷看并不合理。

你可能想这样做,而不是:

^This (\w+) (\w+) was built in (\d+)\. (?!This car has a salvage title)(.+?)\.$ 

这里,(?!This car has a salvage title)(.+?)不匹配点之前的句子(精确地说,至少一个字符),不与短语开头“这车有救助标题“。或者,如果你不想在第一句之后的任何地方出现这个词,那么可以使用

^This (\w+) (\w+) was built in (\d+)\. (?!.*?This car has a salvage title)(.+?)\.$ 
//          ^^^