我有一个类似于notepad++的文件如下:
n1:n1:n1
n1:n1:n2
n1:n1:n3
我想删除冒号之前的所有内容,包括冒号本身,希望得到以下格式的结果:
n1:n1
n1:n2
n1:n3
谢谢, 希望我的问题解释得足够清楚。
Ken White : 谢谢,但是我的文件有超过10k行,第一个“n1”在大约1000行后变成“n2”,然后变成“o1”而不是“n1”,我想删除冒号之前的所有内容。
我有一个类似于notepad++的文件如下:
n1:n1:n1
n1:n1:n2
n1:n1:n3
我想删除冒号之前的所有内容,包括冒号本身,希望得到以下格式的结果:
n1:n1
n1:n2
n1:n3
谢谢, 希望我的问题解释得足够清楚。
Ken White : 谢谢,但是我的文件有超过10k行,第一个“n1”在大约1000行后变成“n2”,然后变成“o1”而不是“n1”,我想删除冒号之前的所有内容。
:
的任何字符,后跟一个冒号,并将它们替换为无内容。
^([^:]+:)(.)
\2
这实际上回答了您的问题,并且不会假设第一个冒号之前或之后的任何内容。
^
表示搜索必须从行首开始[
]
指示要查找的字符
a. 第二个^
紧随第一个方括号之后,从要查找的字符转换为不要查找的字符
b. 因此,[^:]
表示查找除冒号以外的任何字符+
表示查找这组字符的1个或多个出现次数
a. 如果某些行可能以冒号开头,并且您仍然希望替换该冒号,则需要查找行首的0或多个非冒号字符
b. 为此,请将+
替换为*
.
表示查找任何字符。如果在这里没有它,那么它将删除第一个冒号之前的所有内容,然后下一组将位于行首,因此您将删除太多内容。你可以在这里技术上放一个加号或星号,但你不需要它。\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:
^([^:\r\n]+):(.)
要捕获以冒号开头或第一个冒号后面没有内容的行,请将加号更改为星号,并在点后面添加一个问号:^([^:\r\n]*):(.?)