Notepad ++用" Bookmark line"选项不会为与多行正则表达式匹配的所有行添加书签,但只会添加第一行

时间:2015-03-11 15:05:30

标签: regex notepad++

我想从属于特定用户的日志中过滤所有内容。 使用以下模式,和"。匹配换行符"选项已启用,我可以匹配我正在寻找的所有内容,但是当我要求Notepad ++为这些行添加书签以便我可以复制它们时,会发生一些奇怪的事情。

([^\n]+)userB(.+?)(?=([0-9]{4}-[0-9]{2}-[0-9]{2}))

在第2行和第8行的前面,我看到一个书签图标,但是线条:3,4,5和9,10,11缺少一个图标,尽管它们属于突出显示的文本。

为什么Notepad ++会突出显示文字,但是没有正确放置书签?更重要的是,我该如何解决这个问题?

这是我正在使用的日志:

2015-03-02 11:28:44,993 INFO  application [http-0.0.0.0-8080-17]            userA     99:7 12345 some message
2015-03-02 11:28:45,468 WARN  application [http-0.0.0.0-8080-9]             userB     12:2  some message
extra information
    at some.classes.and.function(Filename.java:123)
    at some.classes.and.function(Filename.java:123)
2015-03-02 11:28:44,993 INFO  application [http-0.0.0.0-8080-17]            userA     99:7 12345 some message
2015-03-02 11:28:44,993 INFO  application [http-0.0.0.0-8080-17]            userA     99:7 12345 some message
2015-03-02 11:28:45,468 WARN  application [http-0.0.0.0-8080-9]             userB     12:2  some message
extra information
    at some.classes.and.function(Filename.java:123)
    at some.classes.and.function(Filename.java:123)
2015-03-02 11:28:44,993 INFO  application [http-0.0.0.0-8080-17]            userA     99:7 12345 some message

2 个答案:

答案 0 :(得分:1)

以下内容将在不使用书签的情况下提取您想要的信息,并且可以在Notepad ++版本6.9.1之后使用。
它假定额外信息的行不以数字开头 它会从数据文件中删除复制的行,因此如果要保留它,请处理数据文件的副本 它不是很有效,因为切换选项卡命令将光标定位在选项卡文本的开头 它复制了userB的最后一个匹配项。 (轻微刺激!)

描述

1) Define shortcuts for switching to next & previous tabs
2) Open the data file with Notepad++
3) Open a new tab then go back to the data file tab
4) Define a macro `Cut User data. Paste in next tab`  
5) Run the macro `Cut User data. Paste in next tab` on the data file to `end of file`
  (It needs to be run once prior to running it in `Run a Macro Multiple Times`
  because of a quirk of Notepad++)

方法

1)Settings Shortcut Mapper Main menu
Switch to previous document = Ctrl+Alt+Left
Switch to next document = Ctrl+Alt+Right
Close

2)使用Notepad ++打开数据文件

3)File New Ctrl+Alt+Left

4)Start Recording
Find找到:.+ userB.+\r\n(\D.+\r\n)*
 搜索模式=正则表达式
Find Next Alt+F4
Ctrl+X Ctrl+Alt+Right
Ctrl+End Ctrl+V Ctrl+Alt+Left
Stop recording
Save Current Recorded Macro
姓名:Cut User data. Paste in next tab OK

5)Macro Cut User data. Paste in next tab
Run a Macro Multiple Times
要运行的宏:Cut User data. Paste in next tab
运行直到文件结束=是
Run然后停止Cancel

答案 1 :(得分:0)

(编辑为答案。)

至少在当前版本的Notepad ++中,使用宏解决方案和切换选项卡时,宏会暂停,而切换对话框会出现。

您必须首先进入设置,MISC。,文档切换器,并禁用两个复选框。至少在v7.6中是如此。