【问题标题】:Notepad++ highlighting anything between two square bracketsNotepad++ 突出显示两个方括号之间的任何内容
【发布时间】:2019-07-16 04:08:06
【问题描述】:

我有一个包含数百个 [] 之间的一系列字符串的文档,我想突出显示这些字符串并将信息复制到电子表格中。

我曾尝试使用Find 工具,但无法找出正则表达式

这样做的最终目标是能够将信息一次性复制到一个新文件中,或者突出显示它并复制到一个 Excel 电子表格中。

文本文件类似于:

>X_343435353.3 words like foo bar [Wanted text]
TGATGATGCCATGCTAGCCATCGACTAGCGACTAGCATCGACTAGCATCAGCTACGACTAGCATCGACTACGA
>XP_543857836.3 other information [Text that I want]
TAGCATCGACTAGCTACTACCTGAGCGAGAAATTTTGGCTATCGACATCGACTATCGAGCACAGCTAGGAATT
>NP_3843875938.2 interesting words [Third desired text]
ATCGCATAGCGCGCTTAGAAGGCCTTAGAGGCATCATCTATCGAGCGACGATATCGCGAGGCAGCGCTATACC

我想要的输出如下:

Wanted text
Text that I want
Third desired text

我不确定是否可以在 Notepad++ 中执行此操作,或者您是否需要使用 cmd/shell 工具来执行此操作。我使用的是 Windows 10。当时的想法是,可以使用正则表达式突出显示所有所需的文本,然后可以将其复制到其他地方。

【问题讨论】:

  • 您能提供一个示例文本和预期结果吗?

标签: regex text notepad++ file-manipulation


【解决方案1】:

只匹配文本而不匹配括号:

(?<=\[).*?(?=\])

例子:

删除文档中的所有内容并在每一行只留下想要的文本:

  1. 将光标设置在文档的开头。
  2. 宏,开始录制。
  3. Ctrl-F(查找),.*?\[,选择正则表达式,. 匹配换行符。
  4. 单击查找下一个并关闭对话框。
  5. 删除突出显示的文本。
  6. Ctrl-F(查找),\],选择正则表达式,. 匹配换行符。
  7. 单击查找下一个并关闭对话框。
  8. Enter 删除突出显示的文本。
  9. 宏,停止录制。
  10. 宏,多次运行宏,选择直到文件结束。
  11. 点击运行

结果:

Wanted text
Text that I want
Third desired text

宏完成后,您需要删除最终匹配(如果有)后的最后一位。

【讨论】:

    【解决方案2】:

    也许是这样的表达方式,

    .*\[(.*?)\][\s\S]+?([\r\n]|$)
    

    替换$1\n 也可能有效。

    如果您想探索/简化/修改它,this demo 的右上方面板上会解释该表达式。

    【讨论】:

      【解决方案3】:

      这个对我来说很好用....

      查找内容:&gt;.*?\[(.*?)\]\n.*
      替换为:$1

      【讨论】:

        猜你喜欢
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-05
        • 1970-01-01
        • 2013-08-15
        • 1970-01-01
        • 2011-05-27
        相关资源
        最近更新 更多