删除仅包含单词和数字的行?(notepad ++,正则表达式)

删除仅包含单词和数字的行?(notepad ++,正则表达式)

我有几百个 .txt 文件,我想从中删除只出现单词“Volume”和数字的行。单词“Volume”可能在每个文本文件中出现几次,但我只想删除该行上仅有文本“Volume”和一些数字的行。

我想要删除的行的示例:

                 Volume 158

我不想被删除的行示例:

  text text text Volume 158 text text text

请帮我使用 notepad++ 完成这个吗?

答案1

使用正则表达式:

^\s*Volume \d+\s*$

你应该能够很容易地通过替换空白来做到这一点,例如

记事本++

答案2

您要做的事情涉及复杂的逻辑,即使在 Notepad++ 等高级文本编辑器中也不可能实现。此外,您的问题没有精确定义(例如,“12.3”是不是数字?)。只有您知道您的确切要求。

根据您的技术水平,您可以调整以下 C# 代码以完成您想要的操作。您需要 Visual Studio Express 或类似软件。当然,您可以用其他语言编写此代码,或者尝试寻找替代解决方案。请注意,代码将删除行开始使用“Volume”,即使以下文本不是数字。您需要处理您想要的确切处理。此外,代码专门按名称处理文件。如果您想递归文件夹中的所有文件,那么您可能需要考虑另一个细节:

// Read the file line by line
string szOriginal = @"C:\Tmp\Test.txt";
string szCopy = @"C:\Tmp\Test.txt.tmp";
StreamReader fText = new StreamReader(szOriginal);
StreamWriter fCopy = new StreamWriter(szCopy);

string szLine = string.Empty;
int nIndex = 0;
while ((szLine = fText.ReadLine()) != null)
{
    // Don't copy lines starting with "Volume " (note space character)
    nIndex = szLine.IndexOf("Volume ");
    if (nIndex != 0)
        fCopy.WriteLine(szLine);
}

fText.Close();
fCopy.Close();

// Delete original and rename copy
File.Delete(szOriginal);
File.Move(szCopy, szOriginal);

创建一个空的 Windows 窗体项目,添加一个按钮,双击该按钮(在编辑器中查看代码),粘贴上述代码(如果需要,可进行任何修改),运行代码并单击该按钮。祝你好运!

答案3

删除包含以下内容的行Volume 158

寻找:^.*(Volume 158).*$

替换为:LEAVE EMPTY

或删除包含以下两个单词之一的行Volume158

寻找:^.*(Volume).*$|^.*(158).*$

替换为:LEAVE EMPTY

相关内容