|
でるもんた・いいじまです。
> ちょっと脇なのですが、正規表現に対しては「@」や「R」は
> いうほどは適していません。
...
> たとえは、正規表現中に\nとかけば、ほとんどのシーンでは改行マッチ
> 希望であって、\nという文字列とのマッチではないでしょう。
それは正規表現エンジンの実装に依存しますね。秀丸やPerlの正規表現エンジンは、
「文字列パーサーがどっちの意味に解釈しても正規表現エンジンは期待通りに動く」
という設計になっています。
まず、秀丸はマクロ言語である前にテキストエディタなので、検索ダイアログに U+0
05C U+006E の2文字が入力された場合にそれを改行と解釈する正規表現パーサーを、
マクロエンジンとは完全に独立に持っています。で、この正規表現パーサーは、U+00
0D U+000A の2文字が検索・置換ダイアログにペーストされて、それを受け取った場
合にも、こ
れを改行と解釈します。
実際問題として、マクロで
replaceallfast "\\n", "", regular; // "\n" ではないことに注意
としても、きちんと改行を全部取り除きます。
あるいはPerlでは、正規表現の /.../ の中にスカラー変数を書いて、そのスカラー
変数に記載された正規表現をインタプリタに解釈させることができます。外部のスト
リーム(コマンドライン引数、ファイル、ネットワーク etc)から正規表現の文字列
を取得して、それをPerlのエンジンで解釈することを想定しているのでしょ
う。
これも以下のサンプルコードを実際に試してみてください。
Windowsなら、
C:\> dir | perl -e "$a=qq#\\n#; while (<>) {s/$a//; print;}"
cshなら
$ ls -l | perl -e '$a="\\n"; while (<>) {s/$a//; print;}'
|
|