好吧我用JavaScript处理一些行并希望使用负向前看以消除该行,如果它包含一个特定的短语但我似乎仍然抓住行和regexbuddy其他人显示它匹配,我不知道为什么
^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 :(得分: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)(.+?)\.$
// ^^^