我希望在 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
答案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
屏幕截图: