Notepad++ 从文本中仅获取包含某些字符串的单词

Notepad++ 从文本中仅获取包含某些字符串的单词

我希望在 notepad++ 结果中只获取包含特定字符串的单词。有很多查找单词的示例,但很少显示如何在结果页面中只获取这些单词。

例如 DE2KXXXXXX -> 该词有多个不同之处(文本文档中存在 X 个不同的字符串)

所以我只想要获取这些单词而不是整行。我检查了所有地方,结果只显示获取包含单词或字符串的行。

但我的要求只是获取包含以 DX2K 开头的字符串且单词中包含 6 个字符串的单词。

我只想将它们全部复制到我的 excel 中。但 notepad++ 得到的是整行。

下面,X 是任意字符串,可能是 AZ 或 0-9 。因此它将以 D 开头,第三个字符是 2,第四个字符是 K,然后是字符串。

示例文本:

右击 > W > T DE2K12XXXX 快捷方式消除了先打开记事本的需要。它将创建一个文本 DE2K1XX5XX 文档,准备将其命名为文件 DE2K1XXXXX,然后您要做的就是按 Enter 键打开文本 DE2K1XXX4X 文档进行编辑(按 CTRL+S 保存您的更改,您将获得非常简化的文本文档创建工作流程)。

Notepad++ 结果必须是:

DE2K12XXXX
DE2K1XX3XX
DE2K1XX5XX
DE2K1XXXXX
DX2K1X5XXX
DE2K1XXX4X
DE2K1X2XXX
DE2K1XX3XX

答案1

按照下面的方法做:

步骤1:替换所有使用

搜索字符串:(DE2K\w*)
替换字符串:\n\1\n

这将在您的测试数据上产生以下结果:

在此处输入图片描述

第2步DE2K(\w*):使用选项“书签行”标记所有相同的字符串,得到:

在此处输入图片描述

步骤3:使用菜单搜索 > 书签 > 删除未标记的行,给出:

在此处输入图片描述

答案2

  • Ctrl+H
  • 找什么:.*?(\bDE2K\w{6}\b)(?:(?!\bDE2K\w{6}\b).)*
  • 替换为:$1\n$1\r\n
  • 检查环绕
  • 检查正则表达式
  • Replace all

解释:

.*?         # 0 or more any character but newline
(           # start group 1
  \b        # word boundary
  DE2K      # literally
  \w{6}     # 6 word character
  \b        # word boundary
)           # end group 1
(?:         # non capture group (Tempered greedy token)
  (?!       # negative lookahead, make sure we haven't after:
    \b      # word boundary
    DE2K    # literally
    \w{6}   # 6 word character
    \b      # word boundary
  )         # end lokkahead
  .         # any character but newline
)*          # end group, may appear 0 or more times

替代品:

$1          # content of group 1 (i.e. DE2KXXXXXX)
\n          # line break (you may use \r\n if wanted)

给定示例的结果:

DE2K12XXXX
DE2K1XX3XX
DE2K1XX5XX
DE2K1XXXXX
DE2K1XXX4X
DE2K1X2XXX
DE2K1XX3XX

屏幕截图:

在此处输入图片描述

相关内容