整形が希望どおりにできません、助言をNo.06058
可愛村のたかし さん 09/03/06 21:33
 
原文は下の形をしています。全角と半角の空白が含まれています。[.]が半角、 
[*]が全角です。[\n]は改行です。


お題.「スタート」\n
天\n

....*
......桂.三枝.選.この親じゃ産まれた時から格差つき吉川*乃利子(大阪府豊中市)\n
....*
......難波.利三.選.スタートの近くの椅子で職を終え小針*隼平(茨城県日立市)
    *
......新野.新.選.スタートで出遅れゴールでまた転び羽ヶ崎*邦彦(横浜市磯子区)
    *
......成瀬.國晴.選.一日が始まりにくい休刊日光畑*勝弘(岡山市)


整形完了を下のようにしたい。

スタート
この親じゃ産まれた時から格差つき吉川乃利子(大阪府豊中市)
スタートの近くの椅子で職を終え小針隼平(茨城県日立市)
スタートで出遅れゴールでまた転び羽ヶ崎邦彦(横浜市磯子区)
一日が始まりにくい休刊日光畑勝弘(岡山市)


マクロを作ってみたのですが、「    *」が消去できないのです。
  {replaceall "^    *","", regular;}
  {replaceall "*","";}
の2命令で、消去できているようです。

 この場合、どのような命令を作ればよいのか教えてください。

disabledraw;
replaceall "^天\n|^地\n|^人\n", "", regular;
replaceall "^.+選 ","", regular;
replaceall "^    *","", regular;
replaceall "*","";
replaceall "お題 「","";
replaceall "」","";
replaceall "^\\n", "", regular;
replaceall " ","";
endmacro;

[ ]
RE:06058 整形が希望どおりにできません、No.06059
h-tom さん 09/03/07 10:03
 

h-tom です。

>原文は下の形をしています。全角と半角の空白が含まれています。[.]が半角、 
>[*]が全角です。[\n]は改行です。
<省 略>
>マクロを作ってみたのですが、「    *」が消去できないのです。
>  {replaceall "^    *","", regular;}
>  {replaceall "*","";}
>の2命令で、消去できているようです。
"*"は半角なので、"*"という文字そのものですね?

正規表現(regularフラグあり)では、"*"は直前の文字の「0個以上の繰り返し」
という意味になります。(メタキャラクタと呼ばれている)

その為、
>  {replaceall "^    *","", regular;}
は、先頭にある、3個以上の" "(半角スペース)という意味になり、"*"は、
含まれません。

"*"という文字を含めるには、以下のように変更する必要があります。
>  {replaceall "^    \\*","", regular;}

なぜ、"\\*"とするかは、秀丸のヘルプを参照してください。
目次− 検索系コマンド−正規表現

[ ]
RE:06059 整形が希望どおりにできません、No.06060
可愛村のたかし さん 09/03/08 07:18
 
助言ありがとうございました。

 [*] がメタキャラクタであることを忘れていました。文字ではなく記号なのだろう
かと [\*] で試したりしていました。
 
≫"\\*"とするかは、秀丸のヘルプを参照してください。
 説明文では理解し難かったです。体験してみると具体的でわかりやすいです。

[ ]