CGI-BBS > データベース > 簡易データベース > 簡易データベースの改造で前方一致でなおかつ完全一致。


(株)友林堂
(株)友林堂


質問者 隆次郎  投稿日 2004/2/25(水) 00:30:21
if ($YOMI =~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$FORM{'YOMI'}/i) { ; } else { next; }
が途中一致
if ($YOMI =~ /^$FORM{'YOMI'}/i) { ; } else { next; }
が前方一致とわかっているのですが

例えばヨミで「ア」のみの前方で完全一致検索させるにはどうしたらいいのでしょう。
「アカ」「アオ」などは要らず「ア」一文字の前方一致完全一致検索です。

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:MatuFTP
FTPソフト:
サーバ移転:していない
改造:している 改造前正常動作
CGI習熟度:expert

回答者 しあわせのツボ  [削除]  投稿日 2004/2/26(木) 17:45:58
Perlのパターンマッチは全文検索が基本です。
で、前方一致にしたければ通常は先頭に^を、後方一致にしたければ同様に末尾に$をつけます。
そして、前方一致と後方一致を同時に適用したらどうなるかと言えば…(笑)

でもまあ、完全一致なら普通はeq演算子を使いますね。
質問者 隆次郎  [削除]  投稿日 2004/2/26(木) 22:29:42
しあわせのつぼ 様、
貴重なアドバイス(発想)有難うございました。
前方と後方を同時にさせるとは、思いつきませんでした。

実はある項目に数値データがあり、それを選ぶときに
1だと10番台もヒットしてしまうので、
eq演算子を使ったら何故かうまく機能しませんでした・・
回答者 しあわせのツボ  [削除]  投稿日 2004/2/26(木) 23:39:00
数値なら普通に==で比較するのがベストでは。
eqは文字列コンテクストなので、末尾に改行コードがあったような時に
期待しない動作になります。

返信(回答)する

 


Web裏技