【问题标题】:[Auto Select Text Between two given words in a notepad++][Auto Select Text Between two given words in a notepad++]
【发布时间】:2017-10-07 06:16:10
【问题描述】:

我有一个很大的文本文件。我有一个给定的特定关键字[中间有空格,如“ABC DEF G”]。 它要么在文本文件中恰好出现两次,要么根本不出现。

我想要一个 notepad++ 搜索,以便自动选择这两个关键字之间的所有文本(大约 300 到 1000 行)。 然后我将通过我的插件对这个选定的文本进行一些操作。所以我的第一个问题是:

这种自动选择是否可能(通过正则表达式或一些已经构建的插件)。

如果是,请有人建议。

到目前为止,我正在阅读整个文本文件以进行搜索,这既耗时又耗内存。 谢谢。

【问题讨论】:

  • 你的意思是像THIS
  • 是的,就像这样:)
  • 太棒了。我已将其添加为答案。

标签: regex notepad++ notepad programmers-notepad


【解决方案1】:

试试这个正则表达式:

(?<=ABC DEF G)[\s\S]*(?=ABC DEF G)

Click for Demo

说明:

  • (?<=ABC DEF G) - Positive Lookbehind 查找文本 ABC DEF G 前面的位置
  • [\s\S]* - 匹配 0+ 次出现的任何字符
  • (?=ABC DEF G) - Positive lookahead 查找紧跟文本ABC DEF G 的位置

输出:

【讨论】:

  • 如果你能帮助我,就做一件事。文本就像 ABC DEF G *****.then some text 。然后是 ABC DEF G ******。我想要 ***** 之后的下一行的文本,直到我在第二个再次到达 A。此外,如果文本不存在,这个表达式会做什么。第一个问题我也可以通过我已经在插件中进行的字符扫描来解决。你能告诉我如果这个文本不存在会发生什么。
  • @NikhilSaxena 试试这个:(?<=ABC DEF G)[^\n]*\n\K[\s\S]*(?=ABC DEF G)。见HERE。您正在从下一行开始选择。
  • 它工作正常。但在某些情况下,它不工作。当它不工作时,文本文件很大,大约 4 lac 行,如果小文件高达 2.5 lac,它正在工作.根据文件大小,这个搜索可能会失败还是其他原因?
  • 不应该。由于我们正在处理大文件,可能是某些文件,因此需要更长的时间。要减少步骤数,请尝试使用这个ABC DEF G[^\n]*\n\K[\s\S]*(?=ABC DEF G)。为了更快的匹配,我删除了 Positive lookbehind 部分。
  • :最后一个要求。它还额外选择了一个换行符。我可以跳过选择那个换行符吗。它会影响所选文本的解码。
猜你喜欢
  • 2022-12-26
  • 2021-10-07
  • 2022-11-09
  • 2022-12-01
  • 2022-12-27
  • 1970-01-01
  • 1970-01-01
  • 2022-12-27
  • 2022-12-01
相关资源
最近更新 更多