初心者ですNo.04619
ノノムン さん 05/04/13 23:12
 
ノル 初心者です。

こんな簡単なこと、と思われるかも知れませんが・・

Msg16=Invalid Language File.
reserved=reserved
;50
上記の内容を
Invalid Language File.
にしたいのですが、どの様にするのでしょうか?
「Msg16=」=から行頭まで不要
「reserved」不要
「;50」;付き番号不要
です。

今までは、普通のエディターとして使っています。
マクロを打ち込んで、**.macを作り動作させたいのです。

golinetop;
finddown;
right;
deletebefore;
down;

検索に"="を入れて
これを「1」に登録して 「CTL-1」 で動作させると、
行頭、文字検索、次に行き、そこから行頭までを消去、次の行に行く
となります。

しかし

golinetop;
fsearchdown "="
right;
deletebefore;
down;

はエラーとなります。

また、1行ごとに「CTL-1」を押すのは大変です。

先頭を指定して、ファイルの最後まで一気の削除するには
どの様にすればよいでしょうか?



[ ]
RE:04619 初心者ですNo.04620
ノノムン さん 05/04/13 23:39
 
> fsearchdown "="
は間違っていました
しかし

golinetop;
searchdown "\=" とか "=" "\x2E"
right;
deletebefore;
down;

にしても、「式がおかしいです」 に成ります。

ノノムン wrote:
>  初心者です。
>
> こんな簡単なこと、と思われるかも知れませんが・・
>
> Msg16=Invalid Language File.
> reserved=reserved
> ;50
> 上記の内容を
> Invalid Language File.
> にしたいのですが、どの様にするのでしょうか?
> 「Msg16=」=から行頭まで不要
> 「reserved」不要
> 「;50」;付き番号不要
> です。
>
> 今までは、普通のエディターとして使っています。
> マクロを打ち込んで、**.macを作り動作させたいのです。
>
> golinetop;
> finddown;
> right;
> deletebefore;
> down;
>
> 検索に"="を入れて
> これを「1」に登録して 「CTL-1」 で動作させると、
> 行頭、文字検索、次に行き、そこから行頭までを消去、次の行に行く
> となります。
>
> しかし
>
> golinetop;
> fsearchdown "="
> right;
> deletebefore;
> down;
>
> はエラーとなります。
>
> また、1行ごとに「CTL-1」を押すのは大変です。
>
> 先頭を指定して、ファイルの最後まで一気の削除するには
> どの様にすればよいでしょうか?
>
>
>
>

[ ]
RE:04620 初心者ですNo.04621
三月 さん 05/04/14 06:21
 
>> fsearchdown "="
>は間違っていました
>しかし
>
>golinetop;
>searchdown "\=" とか "=" "\x2E"
>right;
>deletebefore;
>down;
>
>にしても、「式がおかしいです」 に成ります。
>

式がおかしいのはsearchdown の行末に「;」がないからです。

//行頭から=まで削除(=が2つ有る場合は考えない)
replaceall "^.*=", "", regular;
//「reserved」不要(reservedだけの行を削除)
replaceall "^reserved\\n", "", regular;
//「;50」;付き番号不要(;で始まり数字だけの行を削除)
replaceall "^;[0-9]*\\n", "", regular;

のように置換でやるのがいいかも。(試してませんが)

[ ]
RE:04621 初心者ですNo.04622
ノノムン さん 05/04/14 13:57
 
お返事ありがとう

いぜん、此方で教えて貰っていましたが、脊髄の手術の後。
以前していたことが思い出せません。
パソコンがコケテから、マクロファイルがどこかに行ってしまい、
繰り返しの方法が判らなくなりました。

三月 wrote:
> 式がおかしいのはsearchdown の行末に「;」がないからです。
この件はうまくできました。
あと最後まで繰り返すのは度に様にしたらよいでしょう。


> //行頭から=まで削除(=が2つ有る場合は考えない)
> replaceall "^.*=", "", regular;
> //「reserved」不要(reservedだけの行を削除)
> replaceall "^reserved\\n", "", regular;
> //「;50」;付き番号不要(;で始まり数字だけの行を削除)
> replaceall "^;[0-9]*\\n", "", regular;

replaceall と "^;[0-9]*\\n", "", regular;の意味が理解できません。

宜しくお願いいたします。

[ ]
RE:04622 初心者ですNo.04624
三月 さん 05/04/14 19:15
 
>>
>replaceall と "^;[0-9]*\\n", "", regular;の意味が理解できません。
>
replaceall はマクロのヘルプで見ると書いてあるのですが・・・「全置換」です。
「^;[0-9]*\n」に該当する全ての部分を「」(空)に置き換える命令です。
regularは正規表現を使うという指定。

「検索」-「置換」のダイアログで、
検索文字列「^;[0-9]*\n」、置換文字列「」
正規表現にチェックを入れて「全置換」を押した動作に該当します。

正規表現については、置換ダイアログで「ヘルプ」を出すとみれます。
「^;[0-9]*\n」の意味的には
「^」行頭に「;」があって「[0-9]」0から9のいずれかが「*」0回以上の繰り返しされ
「\n」改行までの文字列を表現してます。

ちなみにマクロでは「\n」は「\\n」と表現するのを忘れずに。


[ ]
RE:04622 初心者ですNo.04625
山紫水明 さん 05/04/14 20:08
 
 ノノムンさん,こんばんは。

>あと最後まで繰り返すのは度に様にしたらよいでしょう。

 マクロにもいろいろ書き方があります。一挙にタグ付き正規表現による置換に
行くよりも,折角自分でお作りになったものを少しずつ改善して,動作を確認さ
れながら進まれた方がよろしいかと思います。
 とりあえず次のようにしたらどうでしょう。

Loop:
golinetop;
searchdown "=";
if( result == 0 ) endmacro;
right;
deletebefore;
down;
goto Loop;

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:04625 初心者ですNo.04626
ノノムン さん 05/04/14 20:41
 
三月さん、山紫水明さん お返事ありがとう御座います。

> replaceall "^.*=", "", regular;
全部置換、「"」行頭「^」、から「.*」、「=」まで「",」、無し「""」、正規表現
ですね。
正規表現の意味が分かりました。
「どこかに正規表現の規則がありそれに従って表記すること」

また、正規表現以外にも解決できる、のも判りました。
「操作の順序を追って、マクロを記載すること、等」

> Loop:

> if( result == 0 ) endmacro;

> goto Loop;

の使い方で繰り返しが出来ること。

等です。

[ ]
RE:04626 初心者ですNo.04632
ノノムン さん 05/04/15 23:16
 
ノノムンです

始め気がつかなかったのですが

> //行頭から=まで削除(=が2つ有る場合は考えない)
> replaceall "^.*=", "", regular;

1行に"="が2個合った場合は始めのだけを対照にする場合どうすればよいですか。
この場合はどの様にするのでしょうか?

replaceall "^", "", regular; とか
何処かで調べることが出来るでしょうか。(解決)
http://www.shuiren.org/chuden/teach/hidemaru/seiki/index-j.html
に有りました。
しかし難しすぎて理解できません。

ノノムン wrote:
> 三月さん、山紫水明さん お返事ありがとう御座います。
>

[ ]
RE:04632 初心者ですNo.04633
山紫水明 さん 05/04/16 08:56
 
 ノノムンさん,こんにちは。

>1行に"="が2個合った場合は始めのだけを対照にする場合どうすればよいです
>か。

2通りの書き方があります。
(1) replaceall "^[^=]*=", "", regular;
(2) replaceall "^.*?=", "", regular;

秀丸Ver.4以降で正規表現DLLが hmjre.dll であれば,両方とも可能です。
(どちらかは置換のダイアログで正規表現の右側に示されています。)
それ以前であれば,(1)になります。

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:04632 初心者ですNo.04635
三月 さん 05/04/16 09:06
 
>始め気がつかなかったのですが
>
>> //行頭から=まで削除(=が2つ有る場合は考えない)
>> replaceall "^.*=", "", regular;
>
>1行に"="が2個合った場合は始めのだけを対照にする場合どうすればよいですか。
>この場合はどの様にするのでしょうか?

"^.*=" を "^[^=.]*="にするとよいみたい。
最初の^は行頭から始まる意味
[]内の^は=を否定して.は任意の一文字(つまり=を除いた任意の一文字)
[]*=はカッコ内のいずれかの文字が続いて=まで(つまり最初の=まで)

詳細は↓を読み返してください。
>http://www.shuiren.org/chuden/teach/hidemaru/seiki/index-j.html
>に有りました。
>しかし難しすぎて理解できません。
>


[ ]
RE:04635 初心者ですNo.04636
三月 さん 05/04/16 09:18
 

>"^.*=" を "^[^=.]*="にするとよいみたい。
>

いやはや、細かい正規表現はあまり詳しく無いので
山紫水明 さんあたりがコメントいれてくれると思いながらも書いたら案の定・・・

"."はなくてもいいのね。 >山紫水明 さん
あっても問題は無いのなら私的にはつけたいところですが。
"^[]*="ではなにも適合しないことですし。

[ ]
RE:04636 初心者ですNo.04639
山紫水明 さん 05/04/16 09:55
 
 三月さん,こんにちは。

>"."はなくてもいいのね。 >山紫水明 さん
>あっても問題は無いのなら私的にはつけたいところですが。
>"^[]*="ではなにも適合しないことですし。

 キャラクタクラスの([])中では "." は任意の一文字ではなく,本来のドッ
トを示しますので意味が変わってきます。
 "[^=.]*=" とすると"="と"."を除く1文字という意味になりますので,もし
"="の前に"."があるとこの場合具合が悪くなります。試してみてください。

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:04639 初心者ですNo.04640
ノノムン さん 05/04/16 10:35
 
ノノムンです

三月さん、山紫水明さん 有り難う御座いました。

言葉の解釈(正規表現の)って難しいですね。
お教え戴いたので満足の出来る変換が出来ました。
言語.cfgの中味、「呼び出しアイテム」と、
「表示文字」、「予約」、「位置コード」
から、「表示文字」だけの表と全順番通りの
「呼び出しアイテム」を取り除いた物が作れました。
エクセルにそのまま貼り付けると、これで、各国語の対照表が作れ、
また組み付け直すことが出来ます。

山紫水明 wrote:
>  三月さん,こんにちは。
>
>
>>"."はなくてもいいのね。 >山紫水明 さん
>>あっても問題は無いのなら私的にはつけたいところですが。
>>"^[]*="ではなにも適合しないことですし。
>
>
>  キャラクタクラスの([])中では "." は任意の一文字ではなく,本来のドッ
> トを示しますので意味が変わってきます。
>  "[^=.]*=" とすると"="と"."を除く1文字という意味になりますので,もし
> "="の前に"."があるとこの場合具合が悪くなります。試してみてください。
>
>      では, (^^)/~
>                                         山紫水明(ユーザー)
>                                         SANSHISUIMEI
>
>

[ ]