指定個所の置換えについてNo.02635
ちゃりお さん 01/11/18 21:09
 
はじめまして、ちゃりおともうします。
今回はじめて投稿させていただきます。
マクロはまったくの初心者です。よろしくおねがいいたします。

さて、さっそくですが質問です。
下記テキストデータを整形してデータベースに取り込みたいのですが、
この場合、タイトルの英語題(*)内の半角スペースのみを"@"で
置き換えるには、replaceallfast等の検索系命令文ですと、他も一様
に置き換えられてしまいうまくいきません。ヘルプや過去ログを参照しま
したがいまひとつうまくいきません。助言よろしくおねがいいたします。
注)わかりやすいように半角スペースは_(アンダーバー)で表記。

置換前
_■アメリカンビューティ(AMERICAN_BEAUTY)
_監督:_サム・メンデス
_主演:_ケビン・スペイシー

_■グリーンマイル(THE_GREEN_MILE)
_監督:_フランク・ダラボン
_主演:_トム・ハンクス

_■トルーマンショー(THE_TRUMAN_SHOW)
_監督:_ピーター・ウィアー
_主演:_ジム・キャリー

置換後
_■アメリカンビューティ(AMERICAN@BEAUTY)
_監督:_サム・メンデス
_主演:_ケビン・スペイシー

_■グリーンマイル(THE@GREEN@MILE)
_監督:_フランク・ダラボン
_主演:_トム・ハンクス

_■トルーマンショー(THE@TRUMAN@SHOW)
_監督:_ピーター・ウィアー
_主演:_ジム・キャリー

[ ]
RE:02635 指定個所の置換えについてNo.02638
encodingshiftjis さん 01/11/18 22:25
 
>注)わかりやすいように半角スペースは_(アンダーバー)で表記。
>置換前
>_■アメリカンビューティ(AMERICAN_BEAUTY)
>置換後
>_■アメリカンビューティ(AMERICAN@BEAUTY)

検索文字列
■[^(]+[^)_]+\f_
置換文字列
\0@
正規表現、全置換を置換個数が0になるまで繰り返します。
キー操作の再生でなら

_ を一度に処理するなら、もう少し長いマクロを書きます。
1個づつの繰り返しでもなんとかなりませんか



[ ]
RE:02635 指定個所の置換えについてNo.02639
TAKA さん 01/11/18 23:17
 
ちゃりおさん、こんにちは。TAKA と申します。

>下記テキストデータを整形してデータベースに取り込みたいのですが、
>この場合、タイトルの英語題(*)内の半角スペースのみを"@"で
>置き換えるには、replaceallfast等の検索系命令文ですと、他も一様
>に置き換えられてしまいうまくいきません。ヘルプや過去ログを参照しま
>したがいまひとつうまくいきません。助言よろしくおねがいいたします。

以下のマクロでどうでしょうか?
encodingshiftjisが言われている方法をマクロにしただけですが。
初心者ということで、マクロ命令を書かないと分からないと思いま
したので。

// テストマクロ(ここから)
    while( 1 )
    {
        replaceallfast "■[^(]+[^)_]+\\f_", "\\0@", regular;
        if( !result )   break;
    }
    endmacro;
// テストマクロ(ここまで)

[ ]
RE:02638 指定個所の置換えについてNo.02641
ちゃりお さん 01/11/19 03:32
 
encodingshiftjisさま

下記の検索文字列でうまくいきました。
アドバイスありがとうございました。

ちゃりお
>
>検索文字列
>■[^(]+[^)_]+\f_
>置換文字列
>\0@
>正規表現、全置換を置換個数が0になるまで繰り返します。
>キー操作の再生でなら
>
>_ を一度に処理するなら、もう少し長いマクロを書きます。
>1個づつの繰り返しでもなんとかなりませんか
>

[ ]
RE:02639 指定個所の置換えについてNo.02642
ちゃりお さん 01/11/19 03:33
 
TAKAさま

親切にマクロ命令まで書いていただきありがとうございます。
正直助かりました&勉強になりました。

ちゃりお

>// テストマクロ(ここから)
>    while( 1 )
>    {
>        replaceallfast "■[^(]+[^)_]+\\f_", "\\0@", regular;
>        if( !result )   break;
>    }
>    endmacro;
>// テストマクロ(ここまで)

[ ]