我有一个文本文件,其中包含有关录音的信息,包括曲目编号和名称,我想删除除曲目编号和曲目名称以外的所有其他文本。例如,文本文件如下所示:
text text text text
text text text text text text text text
text text text text text text text text text text text text
text text text text
text text text text text text text text
text text text text
text text text text text text text text text text text text text text text text
text text text text text text text text
text text text text
d1t01 - trackname
d1t02 - trackname
d1t03 - trackname
d1t04 - trackname
d1t05 - trackname
d1t06 - trackname
d1t07 - trackname
d1t08 - trackname
d1t09 - trackname
d1t10 - trackname
d1t11 - trackname
text text text text
text text text text text text text text
text text text text text text text text text text text text
text text text text
text text text text text text text text
text text text text
text text text text text text text text text text text text text text text text
text text text text text text text text
text text text text
我想留下这个:
d1t01 - trackname
d1t02 - trackname
d1t03 - trackname
d1t04 - trackname
d1t05 - trackname
d1t06 - trackname
d1t07 - trackname
d1t08 - trackname
d1t09 - trackname
d1t10 - trackname
d1t11 - trackname
我想出了如何将该行的开头与此正则表达式匹配:
d[0-9]+t[0-9]+[0-9]+ -
但是我无法弄清楚如何删除"其他文本"并且只留下那些线。我还需要它来删除" return"并且不得在文本文件中留下任何空白行。
谢谢!
答案 0 :(得分:17)
编辑:您应该可以在此处使用以下内容。
Find: ^(?!d\w+).*\r?\n?
Replace:
正则表达式:
^ the beginning of the string
(?! look ahead to see if there is not:
d 'd'
\w+ word characters (a-z, A-Z, 0-9, _) (1 or more times)
) end of look-ahead
.* any character except \n (0 or more times)
\r? '\r' (carriage return) (optional)
\n? '\n' (newline) (optional)
答案 1 :(得分:4)
hwnd的答案很接近,但它不会删除所有新行。你说你根本不想在文件中留下任何空白行,所以这将是一个更完整的解决方案:
查找:^(?!d [0-9] + t [0-9] +)。* \ r?\ n?
替换:
在这种情况下,您的初始文本正文将替换为
d1t01 - trackname
d1t02 - trackname
d1t03 - trackname
d1t04 - trackname
d1t05 - trackname
d1t06 - trackname
d1t07 - trackname
d1t08 - trackname
d1t09 - trackname
d1t10 - trackname
d1t11 - trackname
答案 2 :(得分:2)
第1步 - 匹配线。查找对话框>标记选项卡,您可以为匹配的行添加书签。
第2步 - 删除已添加书签的行或删除未添加书签的行。搜索>书签>删除未标记的行或删除已添加书签的行