如何用EmEditor提取正则匹配字符串并保留原行结构?
解决EmEditor提取首尾单词并保留行结构的方法
方法一:用替换功能直接实现(最简单)
别用「提取>仅显示匹配字符串」,改用替换功能就能直接保留行结构:
- 打开「替换」对话框(快捷键Ctrl+H)
- 勾选「正则表达式」选项
- 查找栏输入:
^(\w+).*?(\w+)$- 解释:
^(\w+)匹配行首的单词,.*?匹配中间任意内容(非贪婪模式避免误匹配),(\w+)$匹配行尾的单词
- 解释:
- 替换栏按需输入:
- 要空格分隔就写:
\1 \2 - 要逗号分隔就写:
\1, \2
- 要空格分隔就写:
- 点击「全部替换」,直接得到目标结果:
原内容:
dog cat food
prince dog food替换后(逗号分隔):
dog, food
prince, food
方法二:用宏实现(适合复杂场景)
如果需要更灵活的处理逻辑(比如跳过无首尾单词的行),可以写EmEditor宏:
- 打开「宏」菜单 → 「新建宏」,粘贴以下代码:
document.New(); // 新建文档存放结果 var doc = editor.Document; var srcDoc = editor.SourceDocument; for (var i = 1; i <= srcDoc.GetLines(); i++) { var line = srcDoc.GetLine(i); var matches = line.match(/^(\w+).*?(\w+)$/); if (matches) { // 可自行调整分隔符,比如改成matches[1] + " | " + matches[2] doc.Text += matches[1] + ", " + matches[2] + "\n"; } else { // 无匹配时可选择保留原行或跳过,这里是保留原行 doc.Text += line + "\n"; } }
- 保存宏后运行,就能在新文档里得到保留行结构的提取结果。
内容的提问来源于stack exchange,提问作者MMsmithH
相关产品推荐
相关产品推荐

