正则表达式保留所有行分隔符(sublime)

时间:2016-08-16 14:29:29

标签: regex sublimetext2

我有一个包含大量文本的文件,但在某些行上只有行:

sometext:someothertext

我想要的是保留这些线条。 我写了一个正则表达式,但这与我想要的完全相反:

[0-9a-zA-Z]+(:[0-9a-zA-Z]+)

还有几行有分隔符。我不需要保留这些。样本行将是:

  

这是一篇非常好的文章,内容是关于 sometext:someothertext

正则表达式如何才能获得包含sometext:someothertext格式的行?

2 个答案:

答案 0 :(得分:3)

您可以使用

^(?![0-9a-zA-Z]+:[0-9a-zA-Z]+$).*$\R*

此表达式将起作用like this

替换文字为空。

模式详情

  • ^ - 行的开头(m多行选项在SublimeText中是默认选项)
  • (?![0-9a-zA-Z]+:[0-9a-zA-Z]+$) - 该行不应与该模式匹配:1 +字母数字后跟:和1个或多个字母数字
  • .*$ - 匹配整个(甚至是空的)行
  • \R* - 零个或多个换行符。

如果我有以下文字:

local06:local16
TEXT local76:local16
local06:local17
local06:local19

More TEXT local76:local678

结果是:

enter image description here

答案 1 :(得分:0)

这是一个反面的例子:

[^: \t]:[^: \t]

匹配度:

  1. 不是冒号,空格或制表符
  2. 结肠
  3. 不是冒号,空格或制表符
  4. 您可以向“非”字符类添加您想要排除的任何其他内容。

    这是一个更积极的例子:

    [0-9A-Za-z]:[0-9A-Za-z]
    

    与grep,awk或sed一起使用,以上内容将匹配打印行:

    grep '[^: \t]:[^: \t]' foo.txt
    awk '/[^: \t]:[^: \t]/' foo.txt
    sed '/[^: \t]:[^: \t]/ p; d' foo.txt
    
    grep '[0-9A-Za-z]:[0-9A-Za-z]' foo.txt
    awk '/[0-9A-Za-z]:[0-9A-Za-z]/' foo.txt
    sed '/[0-9A-Za-z]:[0-9A-Za-z]/ p; d' foo.txt
    

    如果你想匹配整行...你可以在正则表达式之前和之后使用.*