使用"书签行选项搜索记事本++不会将与多行正则表达式匹配的所有行都添加为书签,但仅将第一行添加为书签 [英] Notepad++ search with "Bookmark line" option doesn't bookmark all the lines that match a multi-line regex, but only the first one

查看:8
本文介绍了使用"书签行选项搜索记事本++不会将与多行正则表达式匹配的所有行都添加为书签,但仅将第一行添加为书签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过过滤转发属于特定用户的日志中的所有内容。 使用以下模式,并启用".matches newline"选项,我可以匹配我要查找的所有内容,但是当我要求Notepad++为这些行添加书签以便复制它们时,发生了一些奇怪的事情。

([^
]+)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

推荐答案

以下内容将提取您需要的信息,而不使用书签,并且应该可以在Notepad++6.9.1版及更高版本中使用。
它假定附加信息行不以数字开头。
它将从数据文件中删除复制的行,因此如果您要保留该数据文件的副本,则处理该副本。
它的效率不是很高,因为switch tab命令将光标重新定位在选项卡文本的开头。
它复制用户B的最后一个匹配项。(轻微刺激!)

说明

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)SettingsShortcut MapperMain menu
Switch to previous document=Ctrl+Alt+Left
Switch to next document=Ctrl+Alt+Right
Close

2)使用记事本++打开数据文件

3)FileNewCtrl+Alt+Left

4)Start Recording
Find查找内容:.+ userB.+ (D.+ )*
搜索模式=正则表达式
Find NextAlt+F4
Ctrl+XCtrl+Alt+Right
Ctrl+EndCtrl+VCtrl+Alt+Left
Stop recording
Save Current Recorded Macro
名称:Cut User data. Paste in next tabOK

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

这篇关于使用"书签行选项搜索记事本++不会将与多行正则表达式匹配的所有行都添加为书签,但仅将第一行添加为书签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆