我在notepad ++中有这样的文件
N1:N1:N1
N1:N1:N2
n1:n1:n3
我想在第一个"之前删除所有内容:"包括":"本身
并且像这样
N1:N1
N1:N2
n1:n3
谢谢.. 希望我对我的问题的解释足够清楚
Ken White: 谢谢,但问题是我的文件有超过10k行和第一个" n1"更改为" n2"大约1000行之后 然后它变成" o1"而不是" n1" 我想在第一个"之前删除所有东西:"
答案 0 :(得分:2)
使用替换并使用正则表达式查找行开头处不是冒号:
的任何字符,后跟冒号,并替换为空格
^([^:]+:)(.)
\2
这实际上回答了你的问题,并没有假设第一次冒号之前或之后的内容。
^
表示搜索必须从一行的开头[
]
表示您要查找的字符
一个。第一个方括号后面的第二个^
从您要查找的字符切换到不想要查找的字符
湾所以[^:]
意味着寻找冒号以外的任何字符+
表示查找此组字符的一次或多次出现
一个。如果某些行可能以冒号开头,并且您仍想替换该冒号,则需要在行的开头查找 0 或更多次非冒号字符
湾为此,请将+
替换为*
.
表示查找任何字符。如果你没有这里,那么它将删除第一个冒号之前的所有内容,然后下一个设置将在该行的开头,所以你将删除太多。你可以从技术上把加号或星号放在这里,但你不需要它。\2
(如果您愿意,这是反斜杠或反向固定)将获取第二组的内容并将其找到的所有内容替换为这些内容以下是测试输入和输出:
输入(将一些标签和空格以及其他内容粘贴在那里以获得良好的衡量标准)
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]*):(.?)