【问题标题】:How to match lines not ending (-1)\r\n如何匹配不结束的行 (-1)\r\n
【发布时间】:2013-05-04 21:33:13
【问题描述】:

我正在尝试匹配此示例中的前 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 技能并不出色 - 谁能指出我正确的方向?

【问题讨论】:

  • 您使用的是哪种语言工具..regex 实现因语言而异
  • @Anirudh 抱歉,我没有意识到 RegEx 是特定于该语言的。我正在使用 Notepad++ 的查找和替换功能。很抱歉,我已经重新标记了我的问题。

标签: regex notepad++


【解决方案1】:

您可以使用负前瞻

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

【讨论】:

  • @DannyBeckett 我说过,正则表达式应该与多行选项一起使用,您使用的是哪种工具语言
  • @DannyBeckett \r\n$ 之后是不对的! $ 描述了行尾以及之后的任何内容都没有用
【解决方案2】:

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

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

Perl:!/\(-1\)\r\n/

Ed/Vi:v/(-1)^M$

等等

【讨论】:

  • 抱歉,我没有意识到 RegEx 是特定于该语言的。我正在使用 Notepad++ 的查找和替换功能。抱歉,我已经重新标记了我的问题。
猜你喜欢
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 2012-05-26
  • 2015-07-31
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
相关资源
最近更新 更多