如何在记事本++中的“:”字符串之前删除所有内容?

时间:2014-05-02 12:52:19

标签: replace notepad++

我在notepad ++中有这样的文件

  

N1:N1:N1
  N1:N1:N2
  n1:n1:n3

我想在第一个"之前删除所有内容:"包括":"本身
并且像这样

  

N1:N1
  N1:N2
  n1:n3

谢谢.. 希望我对我的问题的解释足够清楚

Ken White: 谢谢,但问题是我的文件有超过10k行和第一个" n1"更改为" n2"大约1000行之后 然后它变成" o1"而不是" n1" 我想在第一个"之前删除所有东西:"

1 个答案:

答案 0 :(得分:2)

使用替换并使用正则表达式查找行开头处不是冒号:的任何字符,后跟冒号,并替换为空格

  • 找到:^([^:]+:)(.)
  • 替换为:\2
  • 搜索模式:正则表达式

这实际上回答了你的问题,并没有假设第一次冒号之前或之后的内容。

  1. 第一个^表示搜索必须从一行的开头
  2. 开始
  3. 括号是石斑鱼和储蓄者。它们实际上并不需要第一位,因为你只是在冒号之前删除它们,但这使得它与Ken White的解决方案并行
  4. 方括号[ ]表示您要查找的字符 一个。第一个方括号后面的第二个^从您要查找的字符切换到想要查找的字符 湾所以[^:]意味着寻找冒号以外的任何字符
  5. 加号+表示查找此组字符的一次或多次出现 一个。如果某些行可能以冒号开头,并且您仍想替换该冒号,则需要在行的开头查找 0 或更多次非冒号字符 湾为此,请将+替换为*
  6. 选择冒号(也将删除)
  7. Right Paren结束第一组
  8. 左Paren开始第二组
  9. .表示查找任何字符。如果你没有这里,那么它将删除第一个冒号之前的所有内容,然后下一个设置将在该行的开头,所以你将删除太多。你可以从技术上把加号或星号放在这里,但你不需要它。
  10. Right Paren结束第二组
  11. 替换为框中,\2(如果您愿意,这是反斜杠或反向固定)将获取第二组的内容并将其找到的所有内容替换为这些内容
  12. 以下是测试输入和输出:

    输入(将一些标签和空格以及其他内容粘贴在那里以获得良好的衡量标准)

    n1:n1:n1
    n1:n1:n2
    n1:n1:n3
    n2:n1:n3
    n4:n7:n5
    
    o1:n1:n1:m1:m1:l1:l7b:l1011
    z99:
    
    -- Here's some more data
    o1:o2:o3:o4:o5
    :o2:o3:o4:o5:o6
         o1:o1:o3:x37:n99
        n2:o1:o3:o44:z76
      n4:n7:n5:u72:j9:
    

    输出

    n1:n1
    n1:n2
    n1:n3
    n1:n3
    n7:n5
    n1:n1:m1:m1:l1:l7b:l1011
    z99:
    o2:o3:o4:o5
    :o2:o3:o4:o5:o6
    o1:o3:x37:n99
    o1:o3:o44:z76
    n7:n5:u72:j9:
    

    请注意,它删除了没有冒号的任何行,这在某些情况下可能更合适。它也错过了我扔在那里的两条线,在线的开头或结尾有一个冒号。

    如果您希望将这些空白行留在中,请在上面的步骤3的括号中添加\r\n(这些也是反斜杠)。然后它将查找任何不是冒号或行尾(步骤3)的字符,后跟冒号(步骤5)。因此,它只删除带冒号的行上的字符。更改查找此字符串的内容:

    • 找到:^([^:\r\n]+):(.)

    要捕获以冒号开头或第一次冒号后没有任何内容的行,请将加号更改为星号并在点后添加问号:

    • 找到:^([^:\r\n]*):(.?)