【发布时间】: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++