【问题标题】:How to remove all characters in a line beginning with a certain word in Notepad++如何在Notepad ++中删除以某个单词开头的行中的所有字符
【发布时间】:2018-02-23 20:20:22
【问题描述】:

我有一个很长的“在文件中查找”搜索的 Notepad++ 搜索结果列表,我只想保留找到的实际文件名,而不是其中的所有匹配项。

搜索结果中的模式是这样的:

D:\XML\xml\cjpp-2012-0298.xml (45 hits)
Line 20: <mml:math><title id="ttl2-5">System <inline-formula id="ieq17">
Line 45: <title id="ttl2-8">System <inline-formula id="ieq17">
D:\XML\xml\cjm-2013-1234.xml (12 hits)
Line 45: <mml:math>....</mml:math>

...等等。

基本上,我想匹配并删除所有以Line 开头的行,以便隔离文件名。我试过^[Line].*?^Line.*?

任何想法都将不胜感激。

【问题讨论】:

  • 去掉括号:^Line.*
  • 如果你使用 linux 试试cat myFile.txt | grep Line
  • 正如我的帖子中所述,这是我尝试过的事情之一。没有肥皂。
  • 方括号创建一个字符集,因此您的第一个模式将只匹配其中一个字符。您的第二个模式失败了,因为末尾有 ?,这使得 * 量词变得懒惰(它会尽可能少地匹配)。
  • 如果我执行 ^Line.* 则删除第一个“Line”实例之后的所有内容,包括所有文件名。我需要这个来单独删除每一行,然后开始寻找以“Line”开头的下一行,跳过任何不以这种方式开始的行。

标签: regex search find notepad++


【解决方案1】:
  • Ctrl+H
  • 查找内容:^Line.*\R
  • 替换为:LEAVE EMPTY
  • 全部替换

  • 检查环绕
  • 检查正则表达式
  • 请勿查看. matches newline

【讨论】:

    【解决方案2】:

    试试这个:

    cat myfile.txt | grep -v '^Line' > outfile.txt
    

    【讨论】:

    • 虽然答案总是很受欢迎,但提供一些有关如何您的代码解决手头问题的附加信息确实很有帮助。这样做有助于那些有类似(但不相同)问题的人。不是每个人都熟悉您的确切编码逻辑,但可能了解您的一般方法概念。为了帮助改进您的答案,请提供一些context surrounding it,并查看writing great answers 上的帮助文章以获取有关如何使您的答案重要的一些提示:)
    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 2014-05-07
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2018-07-05
    相关资源
    最近更新 更多