0

私は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+.+?\(.*?\)

必要なものと完全に一致しますが、1つの問題があります。それは、notepad ++がマークされたすべての行をブックマークするのではなく、検索の開始のみをブックマークすることです。複数行の検索の場合は、一致する最初の行をブックマークするだけです(ただし、残りはマークされます)。つまり、「ファイル内検索」を使用して検索すると、ブックマークされた行のみが返されるため、あまり役に立ちません。

ただし、[検索]-> [ブックマークされていない行を削除]を選択すると、マークされていない行をすべて削除できますが、バッチ検索を実行する必要があるため、これは問題外のようです。

ただし、editpad proなど、他のエディターはマークされたすべての行を返します。

4

3 に答える 3

1

私があなたの期待を正しく理解しているかどうかはわかりませんが、次のようなものはどうですか:

^\s*<FooBar>\s*\((\n|.)*\)
于 2012-07-12T12:46:02.943 に答える
0

Notepad ++は、複数行にまたがる正規表現を適切にサポートしていません。私はこの回避策を見つけました:https ://stackoverflow.com/a/4473041/785745

于 2012-07-12T12:48:37.027 に答える
0

特に Notepad++ の複数行正規表現を探している場合は、この投稿をご覧ください。

于 2012-07-12T12:45:53.563 に答える