行末が:でない英字の検索No.02892
haru さん 01/12/24 09:36
 
いつも、お世話様です。haruです。おはようございます。
早速なんですが、

例えば、
(テキストここから)
ABC:
1ABC:
DEF
23 GHIあああ
(テキストここまで)

上の例で、行末が:でない英字(=ABC以外の英字)を検索したいのですが。

gofiletop;
while(1){
  searchdown2 "[A-Z]+[^:]$", regular;
  if (!result) break;
}
としてみましたが、GHIにヒットしません。
どうすれば良いか教えて下さい。

よろしくお願いします。

[ ]
RE:02892 行末が:でない英字の検索No.02893
ひろ さん 01/12/24 18:41
 
 haru さん今日は、ひろです。
> 上の例で、行末が:でない英字(=ABC以外の英字)を検索したいのですが。
searchdown2 "[A-Z]+.*[^:]$",regular;

[ ]
RE:02893 行末が:でない英字の検索No.02894
山紫水明 さん 01/12/24 20:35
 
 haruさん,ひろさん,こんばんは。

》searchdown2 "[A-Z]+.*[^:]$",regular;

 私もこれでいいと思いましたが,実際にやってみるとうまくいきません。
  Windows98 + 秀丸3.141β1 です
それで,
searchdown2 "[A-Z]+.*[^:]\\n", regular;
とすると,一応うまくいきます。???
何か変ですが,私の勘違い?

》上の例で、行末が:でない英字(=ABC以外の英字)を検索したいのですが。

 タグ付き置換は使えないので,2回に分けて処理する以外にないと思います。

//------------------------------------
gofiletop;
while( 1 ) {
    searchdown2 "[A-Z]+.*[^:]\\n", regular;
    if( result ) {
        escape;
        golinetop2;
        searchdown2 "[A-Z]+", regular;
        message "ok";//確認用
        escape;
        wordright;
    } else break;
}
endmacro;
//------------------------------------

     では, (^^)/~
                                        山紫水明

[ ]
RE:02894 行末が:でない英字の検索No.02895
きいろいまふらあ さん 01/12/25 00:59
 
>searchdown2 "[A-Z]+.*[^:]\\n", regular;

これは、例えば

A

にはマッチしないですが、いいんでしょか?
そもそも、

>》上の例で、行末が:でない英字(=ABC以外の英字)を検索したいのですが。

この日本語が理解できないんですけど。(^^;
行末が:でない行にある1文字以上の連続した英字、ってことなんでしょうか?

そもそもどーいった処理をなさろうとしているんでしょうか?>haruさん

[ ]
RE:02895 行末が:でない英字の検索No.02896
山紫水明 さん 01/12/25 08:14
 
 きいろいまふらあさん,こんにちは。

》これは、例えば
》A
》にはマッチしないですが、いいんでしょか?

 よくないですね。
 ちょっと時間が・・・

     では, (^^)/~
                                        山紫水明

[ ]
RE:02895 行末が:でない英字の検索No.02897
haru さん 01/12/25 09:41
 
みなさん、返事が遅れてすみません。

>>》上の例で、行末が:でない英字(=ABC以外の英字)を検索したいのですが。
>この日本語が理解できないんですけど。(^^;
>行末が:でない行にある1文字以上の連続した英字、ってことなんでしょうか?
その通りです。

>そもそもどーいった処理をなさろうとしているんでしょうか?>haruさん
ヒットした文字(ラベル以外の文字)を小文字にしたい。のですが、
やり方の発想自体が間違っていたりして。

[ ]
RE:02894 行末が:でない英字の検索No.02898
TAKA さん 01/12/25 11:26
 
TAKA です。
ちょっと、乗り遅れ気味ですが。
今日も、これが最後になるかも。今から、出かけますので。

>》searchdown2 "[A-Z]+.*[^:]$",regular;
>
> 私もこれでいいと思いましたが,実際にやってみるとうまくいきません。

「ABC:」にヒットしてしまうということでしょうか?
そらなら、ヒットして正解です。

何故なら、「[A-Z]+」が「ABC」、「.*」が「:」、「[^:]」が改行
にヒットするからです。


>searchdown2 "[A-Z]+.*[^:]\\n", regular;
>とすると,一応うまくいきます。???

これは、「[A-Z]+.*[^:]」で「ABC:」と改行にヒットしますので、
さらにもう一つの改行を付け加えているので、「ABC:」の行にはヒ
ットしません。
但し、次の行が空行ならヒットします。

以下のようデータならヒットします。
//テストデータ(ここから)
ABC:

//テストデータ(ここまで)


という訳で、動きはあっていると思いますが・・・



で、本題ですが。
最初の発言では何がしたいのか分かりませんでしたが「02897」で、
ラベル以外の大文字英字を小文字英字に変換したいということが分
かりました。(何故、そうしたいかは不明ですが)
ラベルの定義は、行末が「:」でよいようですね。

置換(replace系)では、大文字から小文字に変換することが出来
ないので、ラベルでない行をみつけて、その行内の大文字を小文字
に変換すればよいと思います。
ラベルでない行をみつけるなら
searchdown2 "[^:\\n]$", regular;
で事足りると思います。
行選択は、selectline
小文字に変換は、tolower
でよいのでは?

それに、同一行内に複数の英単語があることも考慮すると、今回の
場合は行単位で処理するのが自然のような気がします。
それとも、同一行内に複数の英単語があった場合は、最後の1つだ
け変換なのかな?

AAA BBB CCC
    ↓
AAA BBB ccc

とか?


また、見当違いかも。

[ ]
RE:02896 行末が:でない英字の検索No.02899
ひろ さん 01/12/25 12:58
 
 きいろいまふらあさん今日は、ひろです。
> 》A
> 》にはマッチしないですが、いいんでしょか?
 駄目でしょうね(^^;。2 回の検索に分けるしかないのかな?

[ ]
RE:02897 行末が:でない英字の検索No.02900
安久津 さん 01/12/25 15:16
 
>>そもそもどーいった処理をなさろうとしているんでしょうか?>haruさん
>ヒットした文字(ラベル以外の文字)を小文字にしたい。のですが、

その「ラベル」とは、秀丸マクロのラベルですか?

● 理屈。
検索を複数回に分けなければならない処理でも、
”検索文字列によっては”、強調表示を利用することで、
一回の検索で済む事があります。

一般的に述べると。
「パターン0 にも パターン1 にも パターン2 にもマッチしない文字列の処理」
では、パターン0 と パターン1 と パターン2 にマッチする hilight ファイル
を用意するみたいな感じです。
ただし、この方法は「素の置換」には適用できません。

以下を「一回の検索」というには疑義があります。
しかし、排除したいパターンが多ければ多いほど恩恵があります。

● 例。
(1)コメント/文字定数のカラー表示を「秀丸マクロ」にする。
# C言語, Java のラベルでも大丈夫なはず。Perl は不可。(^^;)

(2)ラベルを強調する。
    ##h = hidemaruhandle(0);
    newfile;
//  insert "17,^ *[A-Za-z_][0-9A-Za-z_]*:\n"; // 強調1、  正規表現
    insert "21,^ *[A-Za-z_][0-9A-Za-z_]*:\n"; // 行強調1、正規表現
    $$t = hidemarudir + "\\tmp.hilight";
    saveas $$t, sjis;
    ##t = hidemaruhandle(0);
    setactivehidemaru ##h;
    closehidemaruforced ##t;
    loadhilight $$t, 0;
    if( ! hilightstate ) config "y+";

(3)検索するときに、ラベルでなくコメントでなく文字列でないか確かめる。
//  ##label = 4;// 強調1、正規表現
    ##label = 6;// 行強調1、正規表現
    searchdown "[A-Z]+", regular;
    while( result ){
        ##cc = colorcode & 0x1f;
        if( ##cc != ##label && ##cc != 4 && ##cc != 20 ) tolower;
        escape;
        moveto selendx, selendy;
        finddown;
    }

では。
# 秀丸の使用頻度激減中。(^^;)

[ ]
RE:02898 行末が:でない英字の検索No.02901
haru さん 01/12/25 15:52
 
みなさん、すみません。
最初に私のマクロを掲載すべきでした。


    gofiletop;
    while(1){
        searchdown2 "[A-Z]+[^:]$", regular;
        if ( result ) {
            question "変換しますか?";
            if ( result ) tolower;
            gowordend;
            escape;
        }
        else break;
    }


 3行目がうまくいきません。
 ラベルはヒットしないで、同じ行のコメントの英字(大文字)は
ヒットさせたいのですが。

>>行末が:でない行にある1文字以上の連続した英字、ってことなんでしょうか?
>その通りです。

と、申し上げましたが、コメントがある場合を忘れていました。

[ ]
RE:02901 行末が:でない英字の検索No.02902
TAKA さん 01/12/25 16:52
 
TAKA です。外出先から戻りました。

>みなさん、すみません。
>最初に私のマクロを掲載すべきでした。

というよりも、みなさん、何がしたいか(どういう仕様)が分から
ないだけなのですが・・・


> ラベルはヒットしないで、同じ行のコメントの英字(大文字)は
>ヒットさせたいのですが。

ん?
コメントの部分のみという意味でしょうか?

それなら、「23 GHIあああ」の「GHI」はヒットしなくていいので
は?
コメントというのは、「//」で始まる部分のことでは?


いままでの、いろいろな発言を呼んでの推測ですが、連続する大文
字英字ラベル以外の大文字英字を小文字に変更したいのかな?

// 置換前テストデータ(ここから)
ABC:    // ABC
Abc:    // Abc
A
a
ABC ABC ABC
// 置換前テストデータ(ここまで)

連続する大文字英字ラベル(この例では「ABC:」)以外を全て小文
字に変更

// 置換後テストデータ(ここから)
ABC:    // abc
abc:    // abc
a
abc abc abc
// 置換前テストデータ(ここまで)

そういうことなら、
searchdown2 "[A-Z]+[^A-Z:]", regular;
で可能ですが。

また、外しているかも

仕様を説明するのが難しければ、具体的に、置換前のデータと置換
後のデータを示して頂けると何とかなると思います。
特に置換後の状態を。
^^^^^^^^^

ただ、出来ないと言われても、どうなって欲しいのかが分からない
ことにはどうしようもありません。

[ ]
RE:02898 行末が:でない英字の検索No.02903
ひろ さん 01/12/25 18:01
 
 TAKA さん今日は、ひろです。
> 「[^:]」が改行
> にヒットするからです。
 「.」は改行にヒットしないので、この点を失念していました。

> >searchdown2 "[A-Z]+.*[^:]\\n", regular;
> >とすると,一応うまくいきます。???
 こうすると改行で終わっていないファイルが上手くいかなので、止めたの
ですが、今回の使い方ではよさそうですね。

[ ]
RE:02892 行末が:でない英字の検索No.02904
haru さん 01/12/26 10:52
 
みなさん、ありがとうございます。
思い通りに変換する事ができました。

[ ]
RE:02903 行末が:でない英字の検索No.02905
山紫水明 さん 01/12/26 11:00
 
 TAKA さん,ひろさん,こんにちは。
 ちょっと遅くなってしまいましたが,

》> 「[^:]」が改行
》> にヒットするからです。
》 「.」は改行にヒットしないので、この点を失念していました。

 同じです。というか,私の場合は「失念」ではなく,もともとそう思いこんでい
ました。
 TAKA さんに感謝!

     では, (^^)/~
                                        山紫水明

[ ]
RE:02905 行末が:でない英字の検索No.02906
TAKA さん 01/12/26 12:06
 
TAKA です。

> TAKA さんに感謝!

どもっ。


取りあえず、今回の質問は、haruさんご自身で解決した?ようです
が、結局どのような仕様で、どのようにして解決したのかが謎のま
ま、完了してしまったようですね。
答えた側として、どのようにして解決したのかは知りたいところで
すが。
#うーん。謎だ。

[ ]