如何用正则表达式在Notepad++中查找首含Entering末含Exiting的多行块?
在Notepad++中用正则匹配包含Entering/Exiting的多行代码块
嘿,我经常处理这类日志匹配需求,给你一步步说怎么在Notepad++里实现:
第一步:设置搜索选项
打开Notepad++的搜索框(快捷键Ctrl+F),切换到Find标签,然后:
- 选中「Regular expression」(正则表达式)选项
- 一定要勾选「. matches newline」这个复选框!这是跨多行匹配的关键,默认情况下
.不会匹配换行符,开了这个才能让正则覆盖多行内容
第二步:使用正确的正则表达式
直接在搜索框里输入下面的正则:
^.*Entering.*$(?s).*?^.*Exiting.*$
我给你拆解下这个正则的作用:
^.*Entering.*$:精准匹配首行——以任意字符开头,包含Entering关键字,以任意字符结尾的整行(?s):开启「单行模式」,强制让.匹配换行符,这样中间的内容可以跨越多行.*?:用非贪婪匹配,避免把从第一个Entering到最后一个Exiting的所有内容都抓进来,只会匹配到最近的那个Exiting行就停止^.*Exiting.*$:匹配末行——包含Exiting关键字的整行
小提示
如果你的日志里有嵌套的方法调用(比如一个方法里又调用了另一个带Entering/Exiting的方法),上面的正则会匹配到内部的Exiting就结束。这种复杂场景需要更进阶的递归正则,但大部分普通日志场景,上面的写法完全够用啦。
内容的提问来源于stack exchange,提问作者Qasim
相关产品推荐
相关产品推荐

