我在Notepad ++中使用Regex试图匹配如下的一般模式:
/*
<FooBar>(<--find open bracket and end on finding a closing bracket-->)
<FooBar> (foo
bar);
<FooBar> (foo
bar
baz)
*/
我正在尝试匹配使用:
^\s*?<FooBar>\s+?.+?\(.*?\)
启用了“匹配换行符”,但它没有按预期工作;书签行显示在空白行上方,并且无法为我需要的所有行添加书签。
我想使用此正则表达式使用“在文件中查找”在多个文件中搜索匹配项。
所以我找到了一些东西。因为它使用多行,所以\ s *在到达foobar之前会匹配。因此,通过替换
删除所有后线^\s+
没有解决这个问题。
^\s*<foobar>\s+.+?\(.*?\)
完全符合我的需要,但有一个问题,那就是记事本++没有标记所有标记的行,只是查找的开头;如果它是一个多行发现它将只匹配匹配的第一行(尽管其余的将被标记)。所以这意味着如果你使用“在文件中查找”进行搜索,它将只返回没有用的书签行。
但是,您可以通过搜索 - &gt;删除未注册的行来删除所有未标记的行,但我需要进行批量搜索,因此这似乎是不可能的。
但是,其他编辑器会返回所有标记的行,例如editpad pro。
答案 0 :(得分:1)
不确定我是否理解你的期望,请问这样的事情:
^\s*<FooBar>\s*\((\n|.)*\)
答案 1 :(得分:0)
如果您专门寻找Notepad ++多线正则表达式,请查看this post。
答案 2 :(得分:0)
Notepad ++不能正确支持跨越多行的正则表达式。我找到了解决方法:https://stackoverflow.com/a/4473041/785745