• ベストアンサー

正規表現について

小文字のaからz 大文字のAからZを それぞれ全角のa~z A~Zに変換するには どう表現すればいいか教えてください またこれとタグ処理をすれば 掲示板として安全になりますか? ここもわかればお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • ruri6syo
  • ベストアンサー率42% (9/21)
回答No.2

すみません。半角→全角のアルファベットですね。 全角にはA-Zのような表現は使えず、更に文字化けを起こします。 こちらは掲示板(CGI)で使うということでしたら、コチラを参考にしてみてはいかがでしょう。 http://perl.misty.ne.jp/14.html#c 掲示板に組み込んだ時の安全性というのは、メールアドレスやURL書き込みへの対処という意味でしょうか。 それでしたら、<A herf= ~> から</A>に挟まれた部分を「URL、メールアドレスへのリンクは禁止です。」などのメッセージに差し替えてしまう方法が有効です。 my $word = 'ここにリンク! → <a herf="http://perl.misty.ne.jp/14.html#c">prel</a> <a herf="http://perl.misty.ne.jp/01.html">prel</a> '; my $message = 'URL、メールアドレスへのリンクは禁止です。'; $word =~ s/<A herf.+\/A>/$message/gi; print $word; _END_

hotjoy100
質問者

お礼

回答どうも! お礼が遅れてすみません  参考URL参考になりました! なかなか難しそうですが~ どうもありがとうございます!!

その他の回答 (1)

  • ruri6syo
  • ベストアンサー率42% (9/21)
回答No.1

パターンマッチの変換演算子 tr///; を使えば良いかと思います。 変換演算子では、正規表現は使えませんので、 tr/a-z/A-Z/; と書きます。文字クラスの[]を付ける必要はありません。 my $word = abcdefg; $word =~ tr/a-z/A-Z/; print $word; _END_ 出力結果 ABCDEFG 置換演算子 s///; との違いは、置換演算子はマッチした文字列を一括して認識するのに対し、変換演算子 tr///; は文字を個別に認識する事です。 置換演算子 s///; を使った場合 my $word = abcdefg; $word =~ s/[a-z]/[A-Z]/g; print $word; _END_ 出力結果 [A-Z][A-Z][A-Z][A-Z][A-Z][A-Z][A-Z] aからzまでの文字が、全て[A-Z]に置換されます。

hotjoy100
質問者

お礼

ありがとうございます

関連するQ&A