WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:正しくパターンマッチさせる

0:[投稿] kimijang [2002/05/15 04:11 ][環境:WIN+IE UNIX系+Perl]

質問ばかりですいません。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match を見て
S-JISでキーワードの正確一致をしようとしているのですが、
ASCII 1文字で誤ってマッチしたり、漢字(8983など)ではエラーが出たりします。
    $keys = $target = $in{'Keyword'};
    $keys =~ s/ / /g; $keys =~ s/</&lt;/g;
    $keys =~ s/>/&gt;/g; $keys =~ s/"/&quot;/g;
    $target =~ s/ / /g; $target =~ s/(\W)/\$1/g;
    @keys = split(/\s+/,$target);
    $str = "$hogehoge";#データ中身は既にS-JISで持っています。
    foreach $term (@keys) { if ($str =~ /$term/i) { $match = 0; }}
↑が現在で↓に替えて上手くいきませんでした。
foreach $term (@keys) {if (index($str, $keys) > -1) {
if ($str =~ /^(?:$oneByte_sjis|$twoBytes_sjis)*?\Q$keys\E/) { $match = 0; }}

宜しければ助けてください。お願いします


1:[関連] 匿名な人 [2002/05/17 13:40 ]

私は、正規表現が苦手なのでアレですが...。

大崎さんも以下のようにおしゃっていますね。
>perl で日本語を扱うには perl スクリプトを EUC-JP で書くのが一番簡単な方法です。


2:[回答] たこすけ [2002/05/27 20:10 ]

Perl で Shift_JIS なら
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm
が参考になります。


3:[回答] 神のむだ毛 [2002/05/27 22:22 ]

あくまでベストはeucで作成するだけど、正規表現を使う部分で
関係変数をeucに変換し、終わったら(表示時に)sjisに戻せば
どうでしょうか?

ただし、当然負荷が掛かるので大量の処理には向きませんが、
1度しか比較しなかったり、変換の仕方を工夫したりすれば
とりあえず問題無いと思います。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World