Notepad++ 正则表达式实操


发布日期 : 2020-12-06 17:49:23 UTC

访问量: 10 次浏览

Notepad++ 是一款广泛使用的开源文本编辑器,它可以方便地进行正则表达式替换,在处理大量文本时可以大大提高工作效率。
本文将介绍在 Notepad++ 中使用正则表达式进行替换的方法及示例。

正则表达式基础

正则表达式是一种特殊的语法规则,用于在文本中查找和匹配特定的模式。
在 Notepad++ 中,通过 Ctrl + F 打开查找窗口,在“查找模式”中选择“正则表达式”,即可使用正则表达式查找文本。
常用的正则表达式符号如下:

  • . :匹配任何单个字符;
  • * :匹配前面的字符零次或多次;
  • + :匹配前面的字符至少一次;
  • ? :匹配前面的字符零次或一次;
  • \ :转义特殊字符,例如 \. 表示匹配点符号;
  • [] :匹配括号内的任意一个字符;
  • [a-z] :匹配任意一个小写字母;
  • [A-Z] :匹配任意一个大写字母;
  • [0-9] :匹配任意一个数字;
  • () :分组匹配;
  • | :或者匹配。

正则表达式替换

Notepad++ 中的正则表达式替换功能是在查找窗口中实现的。打开替换对话框的方式是在查找窗口中点击“替换”按钮或按下 Ctrl + H 快捷键。
在替换对话框中,同样需要选择“正则表达式”选项才能进行替换。
在替换对话框中,可以将查找字符串和替换字符串分别填写,并勾选“正则表达式”选项,然后点击“替换”或“全部替换”按钮便可以进行正则表达式替换。

下面是一些常见的正则表达式替换示例:

删除空行

删除多余的空行可以让文本更加整洁。

查找项:
^\s*$\n

替换项:
(留空)

示例代码:

//删除多余的空行
void deleteEmptyLines()
{
//打开待处理的文件
ifstream infile("input.txt");

//打开保存处理结果的文件
ofstream outfile("output.txt");

string line;
while(getline(infile, line))
{
//判断是否为空行
if (!regex_match(line, regex("^\\s*$")))
{
//将不为空的行写入新文件
outfile << line << endl;
}
}
}

上述代码使用了 ^$ 符号分别表示行的开头和结尾, \s 表示空白字符, \n 表示换行符。
使用 regex_match 函数进行匹配,如果不为空行则将其写入新文件。

批量替换

批量替换可以快速修改一批文本中的相同内容。

查找项:
old

替换项:
new

示例代码:

#批量替换
import re

#打开待处理的文件
with open('input.txt', 'r') as f:
text = f.read()

#进行替换
text = re.sub(r'old', 'new', text)

#保存结果
with open('output.txt', 'w') as f:
f.write(text)

上述代码使用了 Python 的正则表达式模块 re ,使用 sub 方法进行替换。

提取网址

提取文本中的网址可以方便地进行链接转换等操作。

查找项:
https?://[^\s]+

替换项:
(留空)

示例代码:

//提取网址
import java.io.*;
import java.util.regex.*;

public class ExtractURLs {
public static void main(String[] args) {
try {
//打开待处理的文件
BufferedReader reader = new BufferedReader(new FileReader("input.txt"));

//打开保存结果的文件
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));

String line;
Pattern pattern = Pattern.compile("https?://[^\\s]+");
while ((line = reader.readLine()) != null) {
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
//将匹配到的网址写入新文件
writer.write(matcher.group());
writer.newLine();
}
}

//关闭文件
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

上述代码使用了 Java 的正则表达式类库,使用 PatternMatcher 类进行匹配。
使用 group 方法获取匹配到的网址,使用 newLine 方法将多个网址分行写入新文件。

结论

使用正则表达式进行替换可以方便地对大量文本进行处理,在 Notepad++ 中也提供了方便的功能。
但是在使用正则表达式的过程中需要小心,防止错误匹配导致结果不符合预期。