\nを使った複数行検索の際の制限について(Ver8.22対応版)
目次− 検索系コマンド− 正規表現− \nを使った複数行検索の際の制限について 秀丸エディタでは、検索文字列に\nを含めて正規表現を使うことにより、複数行にまたがる文字列を検索することができます。 例えば、「これは\n秀丸エディタです$」という検索文字列を指定すれば、 これはという2行を見つけだすことができます。 秀丸エディタでは検索元文字列の中に「\n」がいくつ含まれているかを計算し、その数+1の行まで検索でヒット可能にします。そういう特殊な仕組みのため、\n自体を任意の回数繰り返すような正規表現は、期待通りに動作しないことがあります。 例えば、「\n+」という正規表現は、秀丸エディタでは\nが1つ含まれているものと解釈し、2行単位で検索処理します。したがって、空行が3行連続していても、そのうちの2行分にしかヒットしません。ご注意ください。 (V8.00以降では(?#maxlines:数値)という記述を書くことで回避可能) また、\nを使った検索は秀丸エディタに負荷がかかって遅くなるので、もし「$」で置き換え可能な場合にはなるべく「$」を使うようにしてください。 ちなみに、強調表示で指定する文字列の中には\nは使えません。(強調表示は複数行に対応してません) タグ付き正規表現などで、改行以降にヒットするような検索文字列の場合はヒットしないようになっています。 例えば、「(これは)\n(秀丸エディタです)(?\2)」という検索文字列の場合、 これはという2行のうち2行目にヒットすることが期待されますが、実際にはヒットしないように抑制されています。 (V8.00以降では(?#fulllinematch)という記述を書くことで回避可能) V8.00以降 V8.00以降では、検索文字列内にコメントを書くことでこれらの制限を取り払うことができるようになりました。 このコメントによる制御は正規表現DLLの解釈ではなくて秀丸エディタ本体による独自の解釈で、正規表現の文法には含まれません。
|