正規表現の記述方法についての質問

このQ&Aのポイント
  • 正規表現の記述方法について分からない項目があります。具体的には、値が空の場合に処理Aを行いたいというif文をどのように記述すれば良いのか知りたいです。
  • 質問文章では、正規表現の記述方法について説明しています。具体的には、value属性が空の場合に処理Aを行いたい場合のif文の書き方について教えてほしいです。
  • 以下の正規表現の記述の仕方がわからないので、教えていただけますか?具体的には、value属性が空の場合に処理Aを実行するif文の書き方について知りたいです。
回答を見る
  • ベストアンサー

正規表現について

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

  • Perl
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

その記述はおかしい・・ その文書、そのものを1行ずつ読むのではなく、CGIの内部で、QUERY_STRINGなどで送られたデータを処理した後ではないですか? だとすると、その前に スカラー変数=値 ないし 配列=値 という処理があるのでは? だとすると、 if ($ABC =~/^\s$/){処理} のはずです。

関連するQ&A

  • 正規表現でのマッチング

    連想配列%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文などを用いないのでしょうか? だったら正規表現の本にマッチングの文法を書いていますよね!? なんだかんだでマッチングがうまくいかないのです。 この場合、どう記述すればいいのでしょうか? お手数をお掛けします。

  • rubyの正規表現について質問です。

    rubyの正規表現について質問です。 rubyを勉強中ですが、 正規表現について質問させてください。 以下のようなことをしたいのですが、どのような記述をすれば実現できるでしょうか? (1)test → #test (2)test → test 「test」の場合は、「#」を加え、「#test」に置換したい 「test」の場合は、そのまま「test」としたい。 if を続ければ可能だとは思いますが、 一つの正規表現で(1)のケースだけを引っ掛けられればと思っています。 正規表現でANDが使えればよいのですが、使えないようですし。。。 お手数をおかけしますが、お力をよろしくお願いします。

    • ベストアンサー
    • Ruby
  • 正規表現のm{}

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

    • ベストアンサー
    • Perl
  • c#の正規表現がうまくいきません

    c#の正規表現がうまくいきません 以下のhtmlから指定の文字列を抜き取ります(htmlは適当です) ---------------------------------------- <select class="iiy_name_list"> <option value="1347">abc</option> </select></td> <select class="sug_name_list"> <option value="761">def</option> </select></td> ---------------------------------------- 2行目の"abc"、5行目の"def"の2つをキャプチャで得たいのですが、 @"<option\s+[^>]*>(.*)</select>",という指定では5行目の"def"しか得られません forを使って2回のループで一つ目の変数に"abc"二つ目の変数に"def"を入れるには どうしたらよいのでしょうか? 以下のページを参考にしたのですが、うまくいきません… http://uchukamen.com/Programming1/RegEx/index.htm よろしくお願いします。

  • マッチに関する正規表現

    $hoge = ’ <select name="a"> <option value="A" selected>■</option> <option value="B">★</option> <option value="C">▲</option> </select> <select name="b"> <option value="A">■</option> <option value="B">★</option> <option value="C" selected>▲</option> </select> ’; となっている場合、 『selected』が付いているoptionにマッチさせ、 そのvalue値【A】や【C】を$hoge1や$hoge2へ代入したいのですが、正規表現はどのようになるのでしょうか? $hoge =~ /value="?([^"]+)"? selected/g $hoge1 = $1; $hoge2 = $2; ↑これでは、ダメでした。 御教授 お願い致しますm( __ __ )m

    • ベストアンサー
    • Perl
  • 正規表現についてお教え下さい

    正規表現についてお教え下さい。 )以外の全ての文字列(改行・Tab・空白等含む)の1回以上の繰返しという記述は正規表現ではどのような記述になるでしょうか? NoEditorで下記のような条件でgrepしようとしたのですがうまくいきません。 [[^[^\)]] \t\n\r\f]+ 具体的には下記のような5行があった場合、以下のような条件で1、2、3行目を抽出できるということを想定しています。 条件:AAA )以外の全ての文字列の1回以上の繰返し \) ※現状の条件の記述はAAA[[^[^\)]] \t\n\r\f]+\) 1行目 AAAあ(aaa) 2行目 AAA あ(aaa) 3行目 AAA あ 4行目 (aaa) 5行目 AAA)

  • 正規表現

    正規表現のパターンを変数内に入れて評価することは 可能なんでしょうか? たとえば、 my $value = " 0123"; my $patern = "\s.+"; if( $value =~ /$patern/ ) ~略~ のような感じです。

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

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

  • c#で正規表現を使用してのmatchがうまくいきません。

    c#で正規表現を使用してのmatchがうまくいきません。 例えば以下のようなタグがあったとします この6行をmatchの対象の文字列としたとします。(タグは適当です) ---------------------------------------- <select class="iiy_name_list"> <option value="1347">abc</option> </select></td> <select class="sug_name_list"> <option value="761">def</option> </select></td> ---------------------------------------- 2行目の"abc"を含む列が欲しかったので、以下のように正規表現にてキャプチャ範囲を指定 @"<option\s+value=""1347"">(.*)</select></td>", しかし、”(.*)”以降に指定した"</select></td>"というタグは match対象の全体分には2箇所全く同じ物があるため、2回目に出現した"</select></td>"まで読み込み、不必要なdefの行までも取得してしまいます。 "</select></td>"以外に正規表現で指定できる文字はありません、 ”(.*)”以降に指定した"</select></td>"が最初に出現した場所までをキャプチャし、2回目に出現してもキャプチャの範囲対象外にするには どのようにすればよいのでしょうか? よろしくお願いします。

  • Linuxの正規表現について

    Linuxの正規表現について教えてください。 正規表現を使うと、文字列のパターンを表す事ができる。例えば、行頭が「#」で始まる行は____、aもしくはfで始まる三文字の文字列は____となる という問題なんですけど____の部分をだれか教えてください。明日テストなんだけどわからくて… お願いします。