タグ検索で変数を使うNo.08430
おすぎ さん 16/10/28 10:06
 
次のようなタグ検索は重宝しています。

(?\2)(aaa)(bbb)(ccc)

ここで、(aaa)、(bbb)、(ccc)のいずれかに、
変数(str(#n)など)を入れることって可能なんでしょうか?

あれこれ試したんですがうまくいいきません。
よろしくお願いいたします。

[ ]
RE:08430 タグ検索で変数を使うNo.08431
でるもんたいいじま さん 16/10/28 10:58
 
でるもんた・いいじまです。

> 次のようなタグ検索は重宝しています。
> (?\2)(aaa)(bbb)(ccc)
> ここで、(aaa)、(bbb)、(ccc)のいずれかに、
> 変数(str(#n)など)を入れることって可能なんでしょうか?

まず確認ですが、この4番会議室宛に「変数を使いたい」と投稿している時点で、マ
クロでの実装ですよね。

ということは、
"(?\\2)(aaa)(bbb)(ccc)"
と、バックスラッシュを二重にしなくて大丈夫ですか?

> あれこれ試したんですがうまくいいきません。

何をどう試されたのかわかりませんが…
たとえば上記のパターンのaaaの位置に #n の内容を入れたければ、
"(?\\2)(" + str(#n) + ")(bbb)(ccc)"
sprintf("(?\\2)(%d)(bbb)(ccc)",#n)
の2とおりで行けると思うのですが、いかがでしょうか?

もしこれでうまくいかないようであれば、どういうマクロを書いているのか、実例を
ここに投稿していただければと思います。

[ ]
RE:08430 タグ検索で変数を使うNo.08432
Iranoan さん 16/10/28 12:57
 
おすぎさん今日は、Iranoan です
> (?\2)(aaa)(bbb)(ccc)
>
> ここで、(aaa)、(bbb)、(ccc)のいずれかに、
> 変数(str(#n)など)を入れることって可能なんでしょうか?
マクロ中では「\」は「\\」と二重にエスケープする必要があるので、それも考慮す
れば、
searchdown "(?\\" + str( #n ) + ")(aaa)(bbb)(ccc)", regular;
の要領で、str() 関数を文字列の外で使ってやれば良かったと思います。

# これを書いているのが、Windows でないので、実機で確認していないけど(^-^;;。

[ ]
RE:08432 タグ検索で変数を使うNo.08433
おすぎ さん 16/10/28 15:33
 
でるもんたいいじまさん、Iranoan さん

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

"検索は文字列のみ" の考えになかなか慣れなくて困惑しています。

重ねて、ありがとうございました。

[ ]
RE:08433 タグ検索で変数を使うNo.08434
でるもんたいいじま さん 16/10/28 18:24
 
でるもんた・いいじまです。
ちょっと脱線します。

> でるもんたいいじまさん、Iranoan さん
> ありがとうございました。
> "検索は文字列のみ" の考えになかなか慣れなくて困惑しています。

文字列と数値の区別がない(あるいは、文字列と数値とを変換なしに混在させてい
い)言語しかご存じないと、そういう考えになってしまうのも無理がないのかなあ、
と思います。

でも、そういう言語もいろいろと問題がありまして、たとえば「"1" + "2"」は3なの
か12なのかという問題があります。ちなみにこの式、秀丸マクロではこれは "12" に
なります(3を得たければそれぞれの文字列をまずval()で数値型にしてから + で足
し合わせる)。
一方で、Perlでは3になります("12" を得たければ + ではなく . を使って "1" . "
2" とする)。JavaScriptにも同様の問題がありますが、これは私は正確なことをい
まだに理解していません。

このへんは、「『文字列型の変数』が存在しない言語では、文字列をどうやって処理
するのか?」ということをいちど勉強してみると面白いと思います。

「『文字列型の変数』が存在しない言語」というのは具体的には、C言語(いきなりC
++ではなく)です。C言語の入門書は腐るほどありますし、無料の処理系もいくつか
あります。
あるいは、自分でインストールするのが面倒であれば、どこかにシェルログインつき
のWebスペースを借りて、そこでインストール済みのコンパイラを使うという手もあ
ります(私は最近はそっちのクチです)。

[ ]