Vim正则表达式:除模式外的匹配线

时间:2013-09-19 12:52:05

标签: regex vim

我有以下两行:

test.tex|42 error| Undefined control sequence
test.tex|43 error| Undefined control sequenceFAILURE

我想要一个与两行中“未定义的控制序列”匹配的正则表达式(因此忽略第二行中的FAILURE部分)。我试过

/^|\d\+ error|\s\zs.*

但这显然也突显了失败。我想我必须使用否定前瞻但我使用它是错误的,因为以下不起作用

/^|\d\+ error|\s\zs.*\(FAILURE\)\@!

编辑:“未定义的控制序列”只是一种错误。这些行的通用结构是

 file|number error| Error message

我想要一个通用正则表达式,它只匹配有时以

结尾的错误消息
Error messsageFAILURE

我想忽略“FAILURE”部分,只是得到“错误信息”

2 个答案:

答案 0 :(得分:1)

对于您的问题,/Undefined control sequence将完全符合您的要求。

如果您想进行一些动态匹配,可以尝试:

\verror\|\s\zs.{-}\ze(FAILURE|$)

答案 1 :(得分:0)

模式/Undefined control sequence将匹配两行,而模式/Undefined control sequence\>仅匹配第一行,因为\>匹配单词的结尾。