• ベストアンサー

正規表現について

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

  • Perl
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • 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

  • 正規表現で詰まっています。

    こんにちは。 今、正規表現で困っています。 ファイルの中身 <meta name="description" content=""> <title> B'zのサイトへようこそ </title> 上記のようなhtmlのソースなのですが、以下のように変換できるように正規表現を考えましたが、できませんでした。 変換したい表現 <meta name="description" content="B'zのサイトへようこそ"> <title> B'zのサイトへようこそ </title> titleタグで囲まれた文字を、metaタグのcontentの中に入れたいのです。 とても困っています。どなたかご教授下さい。よろしくお願いいたします。

  • 正規表現でタグの中を除く文字をマッチングするには

    正規表現でタグの中を除く文字をマッチングするしたいのですが 良い方法はありますでしょうか。 例えば <a>のタグの中にない、"あい"を"かき"に変換したい。 <a>あいうえお</a>あいうえお ↓ <a>あいうえお</a>かきうえお という様にしたいのです。 正規表現では向かない処理かも知れませんが、 良い書き方ありましたら教えてください。

    • ベストアンサー
    • Java
  • 正規表現

    正規表現で 数値と半角記号(!#$%()~|-^@[;],./`{+*}_)が入っているというものを表現したいのですが、、、 下記のような正規表現をすると、エラーになってしまいます。何かよい方法はありませんか? ^[a-zA-Z0-9\-_!#$%()~|-^@[;],./`{+*}_]*$ 又、携帯電話のチェックをしたいのですが、 1文字以上の文字列があってというような処理にしたいのですが、何かよい方法はないでしょうか? ereg( "@docomo\.ne\.jp$", $email )

    • ベストアンサー
    • PHP
  • 正規表現について教えてください

    こんにちは。 PHPの正規表現を使用して、あるサイトのhtmlソースから特定のタグ間にある文字を抜き取りたいです。 例えば、下記の場合9を抜き取りたいです。 <div class="a">9</div> この場合の処理方法を教えてください。

    • 締切済み
    • PHP
  • Excel : タグ付き正規表現による文字置換は可能?

    アクティブセルの文字を、正規表現を利用して文字置換をしたいと考えています。 ただ、単純な文字置換ではなく、正規表現にマッチした文字列を記憶して、 置換後の文字列として呼び出して利用します。 秀丸エディタにあるような「タグ付き正規表現」を利用したいです。 Excelでも同じようなことは可能なのでしょうか? 一例として挙げますと、次のような文字置換です。 ●「?」の後に全角スペース以外の文字がある場合には、「?」の後に全角スペースを1つ入れる。 ●「?」の後に全角スペースが複数続く場合には、「?」の後の全角スペースを1つだけにする。 つまり、★を全角スペースとすると、次のようになります。 あいう?あいう   → あいう?★あいう あいう?★★あいう → あいう?★あいう さらに、一例を挙げますと、 ●「AさんはBさんの友達です」というような文章を、「BさんはAさんの友達です」にする。  つまり、AとBに相当する部分を入れ替える。 よろしくお願いいたします。

  • 正規表現について

    正規表現で、「空白またはa~zの中の1文字」を表すには[ a-z]でよいのでしょうか?

  • 正規表現で

    正規表現で 8文字以上、15文字以内で1文字以上の英語(大文字小文字どちらか一方で可)と数字が含まれている表現を考えているのですが、思いつきません。 [0-9a-zA-Z]{8,15} だと全て数字・英語でも通ってしまうので、困っています。 どなたか詳しい方、ご教授ください。

  • 正規表現

    質問させていただきます。 文字コード「Shift-JIS」で渡ってきた文字列を 英字とスペースはOKで、 それ以外の文字列が入力されていたら、エラーいう処理を しているのですが、うまくいきません。 ご教授よろしくお願いします。 // 半角にする $kana = mb_convert_kana($_POST['kana'], "r"); if ((ereg("^[a-zA-Z]+$", trim($kana))) == false) {   echo "エラーです"; } 全角スペースと半角スペースと英字はOKで、それ以外はNG としたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 効率良くURLを拾う正規表現

    掲示板に投稿された文章から、効率良くURL(Email add含む)を拾い、<a>タグを仕込むには、置換処理の中でどのように正規表現を組むのが安全かつ効率的ですか? 例:  私のHPはhttp://www.hoge.com/です。  お問い合わせはhoge@hoge.comまで。         ↓  私のHPは<a href="http://www.hoge.com/">http://www.hoge.com/</a>です。  お問い合わせは<a href="mailto:hoge@hoge.com">hoge@hoge.com</a>まで。

    • ベストアンサー
    • PHP
  • 正規表現でHTMLタグの属性まで選んで抽出

    現在、掲示板をPHPで作っています。 入力された文字列の無効化と許可タグの分別に正規表現を使いたいと考えております。 そこで、現状では、まずすべての < > を特殊文字に変換し、その後に、許可タグ(属性)のタグを < > にもどそうとしています。 たとえば、fontタグならcolorとsizeを許可しようとして、次のような正規表現を作ってみましたが、うまくいきません。 /&lt;font((( )*(color=)[\"\']?.{1,7}[\"\']?)|(( )*(size=)[\"\']?.{1,2}[\"\']?))*&gt;/i 正規表現はまだ勉強し始めたところで、おかしなところだらけだと思いますが、何かヒントだけでもいただけたらと思います。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう