文字列定数の検索(教えてください)No.04062
kiki さん 04/01/30 17:28
 
いつもお世話になります。

文字列定数の検索の方法をご存知の方はいらっしゃいますでしょうか?

やりたいことは、文字列定数('や"で括った文字列)以外の改行やタブを置換したい
のですが、どうも正規表現のヘルプではよくわかりません。

文字列定数を検索する('.*?'とか使って)ことは出来たのですが、それ以外の部分
でかつ\tや\nへのヒットという指定方法がわかりません。

どなたか、ご教授お願いいたします。

以上です。

[ ]
RE:04062 文字列定数の検索(教えてくださNo.04063
ENCODINGSHIFTJIS さん 04/01/30 18:00
 
// 文字列の外側から開始
1つずつ繰り返すのがデバッグしやすいのでは

サーチ \t\n'"
もし \t\n なら 何かの処理
もし ’”なら サーチ ’”  (\’¥”がある時の処理も含めて)
以上をヒットしなくなるまで繰り返し

[ ]
RE:04062 文字列定数の検索(教えてくださNo.04064
Iranoan さん 04/01/31 17:07
 
 kiki さん今日は、Iranoan です。
> 文字列定数('や"で括った文字列)以外の改行やタブを置換したい
 これはおそらく正規表現の検索では無理です。具体例を示すと、
"a\t\na"b\t\nb"c\t\nc"
という文字列です。これは全て前後に「"」を含んでいます。
 ##内部的な関係上、強調表示は出来るのですが...。

 お望みのことをやるには手作業かマクロになると思います。

[ ]
RE:04062 文字列定数の検索(教えてくださNo.04066
kiki さん 04/02/01 12:58
 
いつもお世話になります。

実は先SQLCreanというマクロを作成していて、空白と\tを
最初に取る処理をしていたのですが、文字列定数内はいじ
りたくなかったので、質問させていただきました。

現在、空白削除をする際に
1.空白が2つ連続している。
2.カンマの前後
という条件で、1文字づつループで削除しています。

これが、エディタの折り返し行までいくと、カーソルを
Y軸方向へ動かす必要があって、上記「カンマの前後」と
いう条件での削除時、すごく処理が面倒だったのです。

一括で置換できれば全部解決になると思って、質問をアップ
させていただきました。

やはり、これはこのままにする他なさそうですね。

お二人に感謝します。
ありがとうございました。

[ ]
RE:04063 文字列定数の検索(教えてくださNo.04068
encodingshiftjis さん 04/02/01 18:54
 
[ \t][ \t],[ \t][ \t] → ,
ですかね?

[ ]
RE:04068 文字列定数の検索(教えてくださNo.04069
kiki さん 04/02/01 23:41
 
いつもお世話になります。

>[ \t][ \t],[ \t][ \t] → ,
>ですかね?

・・・。
おおっ、カンマの前後の削除!?
#( ^^;カァー♪ 最初わかんなくて・・・。

やはり、「文字列定数以外で」って条件がほしいです。
文字列定数内のカンマまで編集するとまずいかなと考
えています。

そういいながら、\nと\tは一括置換してるんですが・・・。
(SQLの文字列定数内に\t使ってる人いるかな?)

ありがとうございました。

[ ]
RE:04062 文字列定数の検索(教えてくださNo.04070
IKKI さん 04/02/02 08:51
 
こんにちは。 IKKI です。

色を見るという方法はダメでしょうか?

while (true) {
 searchdown "[\\t\\n]", regular;
 if (colorcode & 0x1f != 20) break;
}

[ ]
RE:04069 文字列定数の検索(教えてくださNo.04071
ENCODINGSHIFTJIS さん 04/02/02 10:20
 
└ 04070 コメント / IKKI [ 04/02/02 08:51 ] さんとの合わせ技
では。

gofiletop;
while (true) {
 searchdown "[ \\t][ \\t],[ \\t][ \\t]", regular;
 if(!result) break; // もう無し
 if ((colorcode & 0x1f) == 20) continue;
// 文字定数強調中はスキップ
 beginsel; right 4;insert ","; // ヒット範囲非選択の場合
// endmacro
}

[ ]
RE:04071 文字列定数の検索(教えてくださNo.04072
kiki さん 04/02/02 15:09
 
>└ 04070 コメント / IKKI [ 04/02/02 08:51 ] さんとの合わせ技
>では。
>
>gofiletop;
>while (true) {
> searchdown "[ \\t][ \\t],[ \\t][ \\t]", regular;
> if(!result) break; // もう無し
> if ((colorcode & 0x1f) == 20) continue;
>// 文字定数強調中はスキップ
> beginsel; right 4;insert ","; // ヒット範囲非選択の場合
>// endmacro
>}

04070 IKKI さん
04071 ENCODINGSHIFTJIS さん

いつもお世話になります。

ご教授、ありがとうございました。

でも、これに近いことやってるんです。(0x1fはうっかりしてました。)
ところが、エディタで折り返し指定の位置まで来ると、rightでカーソルが
固まるのです。
(そのまま素直に次の行の先頭へ行ってくれるとうれしかったのですが・・・。)

そこでX=0,Y=Y+1ってやろうとすると、今度は1文字削除等をしているときに面倒で、
一括置換が出来ないかと思いました。

私のわがままにお付き合いいただき、ありがとうございました。

以上です。

[ ]
RE:04072 文字列定数の検索(教えてくださNo.04073
kiki さん 04/02/02 15:15
 
追伸

って書いてて、アレ?
rightならちゃんと最後までいく・・・???

早速本日、修正してテストします。
ありがとうございました。

[ ]
RE:04073 文字列定数の検索(教えてくださNo.04077
kiki さん 04/02/02 22:42
 
いつもお世話になります。

rightでうまく行きました。
よって、空白削除等はループで処理したままにしました。

ご教授、ありがとうございました。

[ ]