0

我正在尝试匹配此示例中的前 5 行和最后一行:

-- 2012-09-20 rep +6    = 184       
 1  12532070 (2)
 2  12531806 (5)
 2  12531806 (5)
-- 2012-09-21 rep +12   = 196       
 3  125xxxxx (-1)
 3  125xxxxx (-1)
 16 12557052 (2)

留下以下不匹配:

 3  125xxxxx (-1)
 3  125xxxxx (-1)

我尝试了以下正则表达式:

^.*[^(-1)\r\n].*
^.*[^(-1)].*\r\n
^.*[^\(-1\)\r\n].*
^.*[^\(\-1\)\r\n].*
^.*[?!\(-1)\r\n].*
^(!?.*-1.*\r\n)

但是他们都没有做我想要的(主要匹配所有行)。

我的 RegEx 技能并不出色 - 有人能指出我正确的方向吗?

4

2 回答 2

1

您可以使用负前瞻

^(?!.*\(-1\)$).*$\r\n
于 2013-05-04T13:19:44.317 回答
0

我不会尝试为此创建正则表达式,而是使用周围的语言来否定匹配的意义,并使用匹配以'(-1)\r\n' 结尾的行的正则表达式。例如:

壳: grep -v '(-1)^M$'

珀尔: !/\(-1\)\r\n/

编/六: v/(-1)^M$

等等

于 2013-05-04T13:24:01.110 回答