• ベストアンサー

正規表現での「ひらがな」の使い方

正規表現を使って、掲示板などで「ひらがな1字のみ」の記述を制限しようと思うのですが、どうもうまくいきません。 if ($comment =~ m/^[あいうえお…わをん]$/) {} こんなことをしてもみたんですがやっぱりだめでした… どうすればいいのでしょう。 教えてください。

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

  • ベストアンサー
noname#25358
noname#25358
回答No.3

 僭越ながら修正をば。  #1の方の方法を試しましたが、うまくいきませんでした。  #2の方の方法ならおそらくうまくいきますが、もっとスマートな方法があります。  if ( $comment =~ /^\x82[\x9f-\xf1]$/ ) { ...  これだと、ひらがなのみがチェックの対象になります。  カタカナの場合は、  if ( $comment =~ /^\x83[\x40-\x96]$/ ) { ...  です。

namiri_e
質問者

お礼

x82やx9fとかがいまいち分からないのですが、この方法だとカタカナまで一気にできちゃうんですね。 「あ」から「ん」まで全部書かないでいい方法はないのかなと思っていましたが、勉強になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#151446
noname#151446
回答No.2

if($comment =~ m/^(あ|い|う|え|お<略>|わ|を|ん)$/) {} でどうでしょう?

namiri_e
質問者

お礼

ははぁー。 グルーピングという方法がありましたか。 思いつきませんでした。 どうもありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

if ($comment =~ m/^[あ-ん]$/) のようにすれば大丈夫では? [\x84\xbf-\x88\x9f]だと、2バイトコードを拾ってくれるそうです。

namiri_e
質問者

お礼

[あ-ん]ではうまくいきませんでした。 ある正規表現の本では、そうするためにはjperlが必要がどうとか… 回答いただきどうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 正規表現のm{}

    正規表現の記述で、m{}と書くサンプルを目にしたのですが、このmと中括弧は何を意味するのでしょうか? 以下、Hタグにマッチするかをテストする正規表現のサンプルです。 $_ = "<H3>ヘッダ3</H3>"; if ( m{<(H\d)>(.+)</\1>} ) { print "found!!"; }

    • ベストアンサー
    • Perl
  • ASP言語での正規表現の書き方

    if instr(hoge,"Android 4.2.2; ")>0 then 上記のifで4.2.2の数字が変わっても拾えるよう正規表現で記述したいです。 どう書けばよいですか? ASP言語で正規表現を使った事が無いので、使用できるのかも判りません。 宜しくお願い致します。

  • 正規表現について

    いつもお世話になっております。 以下の正規表現の記述の仕方が分からないのですが、 ご存知の方教えて頂けますでしょうか? (やりたいこと) 以下のような記述がある場合、value=の値が空の時は 処理Aをしたいというif文を書きたいのですが 書き方が分かりません。 if($orginal =~ /<option value=\"\"/){ 処理A } のようなif文を記述したのですが、 2行目の「テスト」も引っかかってしまいます。 どのように記述すればよいのでしょうか? <option value="" >選択してください</option> <option value="テスト" >テスト</option>

    • ベストアンサー
    • Perl
  • 正規表現について

    正規表現について 特定文字列の前にある文字列があった場合、はじくようにしたいのですが、 どのように記述すればよいでしょうか。 例えば、さしすせそ の前に かきくけこ があった場合のみはじきたいです。 ○ かきくけこ ○ かきくけこあいうえお × かきくけこさしすせそ × あいうえおかきくけこさしすせそ ○ あいうえおさしすせそ ○ さしすせそ よろしくお願いします。

    • ベストアンサー
    • PHP
  • これは正規表現とは言えないでしょうか?

    正規表現を勉強しようと思っているのですが まずはじめに確認させて下さい。VBAです。 Sub 正規表現() If a Like "*a*" Then End If End Sub は正規表現とは言えないでしょうか? *を使っているからそう思いました。 Dim re As RegExp Set re = New RegExp を使わないと、正規表現といえないのでしょうか? よろしくお願い致します。

  • 正規表現について

    PHP5.2.4を使用しています。 1文字以上のアルファベットと数字の組み合わせは許可(含めて) かつ 「ab」は許可しない(含めない) という正規表現はどのように記述すれば良いのでしょうか?(「01ab」「abc」は許可、「ab」は許可しない) 一応自分なりに考えてみたのですが、 $str = "abc"; if (preg_match("/[^(ab)][a-z0-9]+/", $str)) { print "match<br>\n"; } やはり駄目でした・・・

    • ベストアンサー
    • PHP
  • 正規表現について

    今lexのプログラムを書いているのですが、正規表現の部分でつまずいてしまいました。perlの正規表現なら分かるのですが、lexと少しかってが違い困っています。lexの正規表現でコメント(プログラム中で/**/で囲まれた部分)を読み飛ばす時には、どのような正規表現にしたら是非教えてください。なお/**/の中には文字列*/は出てこないと過程していいとのことでした。 解答お願い致します。

  • 正規表現についての質問

    正規表現で、 テストあいうえお[44]という文字列から 44だけ抜き出したい場合どのように記述すればいいでしょうか? ご教授お願いします。

    • 締切済み
    • PHP
  • 正規表現でのマッチング

    連想配列%hushがあります。 %hushの中のキーが「a何とか」、つまり a0、a1、a2、a3、・・・ の値だけを、配列@arrayに格納します。 つまり  $array[0]=$hush{'a0'}  $array[1]=$hush{'a1'}  $array[2]=$hush{'a2'}  $array[3]=$hush{'a3'} ・・・ といった感じにしたいのですが、 「a何とか」は正規表現を用いて  a.* と表現できます。 ってここまでは手元の本で分かったのですが、マッチングのif文をどう書けばいいんだよ!  if($key==a.*) と書いてもうまくマッチしてくれないんで、a.*を""で括ってみたり()で括ってみたりするものの相手にされず・・・ 手元の本は「こういう場合正規表現ではこう書けば良くて、これをマッチングさせれば良い」みたいなことを書いていますが、マッチングのさせ方は書いていません。 プログラムの文法書を読むと、条件分岐の仕方は書いていますが、==演算子の右側が正規表現だった場合の使い方は書いていません。 あるいは、正規表現の場合のマッチングはif文などを用いないのでしょうか? だったら正規表現の本にマッチングの文法を書いていますよね!? なんだかんだでマッチングがうまくいかないのです。 この場合、どう記述すればいいのでしょうか? お手数をお掛けします。

  • 正規表現で漢字の後がひらがな、ただし一部を除く

    正規表現の記述方法で悩んでいます。 以下に、正規表現での置換の一例を挙げますので改良点を教えて下さい。 ---------- OSはWindows7 64bit 置換に使うソフトは「Word2010」または、一括置換ソフト「Devas」 ---------- 正規表現での置換の一例) 「命」の読みが「イノチ」の場合、カタカナに変換したい。   ([あ-ん])(命)([あ-ん]) これで「命」の前後がひらがなの場合が検索できます。(Devasの場合はその一覧が見れます。) そこで、   \1イノチ\3 で置換すればいいのですが ここで検索できる「命」の読みは「メイ」と「イノチ」になると思います。  身支度を命じられた。 → そのまま  彼に命を狙われる。 → 彼にイノチを狙われる。 「メイ」の読みを除外するために、一つ一つ確認していくのもいいのですが、 「命じ」と「命ず」を除くことができれば、ほとんどが「イノチ」の読みになると考えました。 それには「^」を使って「^ず」「^じ」とかを書き加えれば、どうにかなると思うのですが、うまくいきません。 ([あ-ん])(命)([あ-ん])の検索結果から、「命じ」「命ず」を除く、、、つまり すベてのひらがなを指定しつつ、その一部を除きたい場合の記述方法を教えて下さい。 ご存じの方、何卒よろしくお願い致します。

このQ&Aのポイント
  • PX-S05Bプリンターの設定中におけるセキュリティーキーの位置や取得方法について教えてください。
  • PX-S05Bプリンターの初期設定においてセキュリティーキーの取得にミスがある場合、どのような問題が発生するのでしょうか?
  • PX-S05Bプリンターのセキュリティーキーに関する設定について、詳細をまとめてください。
回答を見る