C#正規表現でキャプチャした文字列を取得する方法

このQ&Aのポイント
  • C#の正規表現を使用してHTMLから指定の文字列を抜き取る方法について説明します。
  • 具体的には、指定のHTML内の特定の要素をキャプチャし、その中の文字列を取得する方法を解説します。
  • また、forループを使用して複数の要素を取得する方法も紹介します。
回答を見る
  • ベストアンサー

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 よろしくお願いします。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

>@"<option\s+[^>]*>(.*)</select>" このパターンをどういうコードで使っているのか教えてもらえますか?

関連するQ&A

  • 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回目に出現してもキャプチャの範囲対象外にするには どのようにすればよいのでしょうか? よろしくお願いします。

  • HTMLにてセレクトボックスを作る

    よろしくお願いします。 <tr><td class="td_head">あいう<br /></td> <td class="td_odd"><select name="select /" > <option value="#">選択して下さい <option value="【a01】">【あああ】</option> <option value="【a02】">【いいい】</option> <option value="【a03】">【ううう】</option> <option value="【a04】">【えええ】</option></select></td> </tr> とすると、エディターにて◆ 102行: 要素optionはこの位置には置けません。と出てしまいます。何か文法ミスがありますか? おヒマな時にでもご回答願えればと思います。

  • firefoxでjavascriptが…

    現在、二つのセレクトボックス間でデータのやり取りをするjavascriptを製作しております。ieでは問題なく動作するのですが、firefoxだと セレクトボックスの移動ボタンを押すと余計なものまで消えてしまいます。どなたかご教授ください。 javascript↓ var master_selected_value; var master_selected_text; var user_selected_value; var user_selected_text; function select_master(a){ master_selected_text = a.master_list.options[a.master_list.selectedIndex].text; master_selected_value = a.master_list.options[a.master_list.selectedIndex].value; } function select_user(a){ user_selected_text = a.select_list.options[a.select_list.selectedIndex].text; user_selected_value = a.select_list.options[a.select_list.selectedIndex].value; } function portlet_move(a,b,c){ if( 1 == b ){ var sw = 0; for( n = 0 ; n < a.select_list.length ; n ++ ){ if( a.select_list.options[n].text == master_selected_text){ sw = 1; } } if( sw == 0 && master_selected_text != null ){ a.select_list.options[a.select_list.length] = new Option(master_selected_text,master_selected_value); } }else{ if( null != user_selected_text ){ for( n = a.select_list.selectedIndex ; n < a.select_list.length - 1; n ++ ){ a.select_list.options[n] = a.select_list.options[n + 1]; } a.select_list.length = a.select_list.length - 1; } user_selected_text = null; user_selected_value = null; } } function data_sum(a,b){ var buff = ""; for( n = 0 ; n < a.select_list.length ; n ++ ){ buff = buff + a.select_list.options[n].value; } a.select_list_data.value = buff; a.type.value = b; a.submit(); } function data_send(a,b){ var buff = ""; for( n = 0 ; n < a.select_list.length ; n ++ ){ buff = buff + a.select_list.options[n].value; } a.select_list_data.value = buff; a.type.value = b; a.send.value = "true"; a.submit(); } html↓ <form method="post" action="test.php" onsubmit="return moveItemSelect('ListBox1','ListBox2');"> <input type="hidden" name="type" value=""> <input type="hidden" name="select_list_data" value=""> <input type="hidden" name="send" value=""> <table> <tr> <td> <select name="type" onchange="data_sum(this.form,'recommended');"> <option value="a" selected="selected">a</option> <option value="b">b</option> </select> </td> <td></td> <td></td> </tr> <tr> <td> <select size="10" name="master_list" onchange="select_master(this.form);"> <option value="1">1</option> <option value="2">2</option> </select> </td> <td> <input type="button" class="button" value="→" onclick="portlet_move(this.form,1,2);"> <br /> <input type="button" class="button" value="←" onclick="portlet_move(this.form,2,1);"> </td> <td> <select size="10" name="select_list" onchange="select_user(this.form);"> <option value="1">1</option> </select> </td> </tr> <tr> <td colspan="3"><input type="button" class="button" value="登録" onclick="data_send(this.form,'recommended_write');" /></td> </tr> </table> </form>

  • 複数のselect値で1つも選択されていないとき、エラーを出したいのですが

    初めて投稿いたします。 宜しくお願いいたします。 postmailで注文フォームを制作中なのですが、複数の商品の個数(デフォルトでは0に設定)をselectで選択させようとしています。 例: <tr><td class="center">NO.01</td><td>あんまん</td> <td><select name="あんまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> <tr> <td class="center">NO.02</td><td>にくまん</td> <td><select name="にくまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> もし、すべての商品の個数が「0」に設定されている場合はエラーを出して、cgiでの送信を中止させたいのですが、どのようなjavascriptをソースに書けば良いでしょうか?  宜しくお願いいたします。

  • 複数のselectで値で1つも選択されていないとき

    POST-MAIL(http://www.kent-web.com/data/postmail.html)で注文フォームを作成中で、 複数の商品の個数(デフォルトでは0に設定)をselectで選択させようとしています。 例: <tr><td class="center">NO.01</td><td>あんまん</td> <td><select name="あんまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> <tr> <td class="center">NO.02</td><td>にくまん</td> <td><select name="にくまん"><option selected value="">0</option> <option value="1">1</option> (~略~) <option value="9">9</option></select></td></tr> POSTMAILの機能では、formのinput valueに入力必須項目を記入できますが、 これに加え、すべての商品のselect値が「0」に設定されている場合も cgiのエラー画面でエラーメッセージを出したいのですが、可能でしょうか? お知恵を貸していただけるようお願いいたします。

    • ベストアンサー
    • CGI
  • 正規表現での置換

    <input class="abc" type="text" value="abc" name="abc" id="abc"> といった文字列があるのですが、 「class="abc" type="text" value="abc" name="abc" id="abc"」 の部分は任意の英数字が入ります。 終了タグの前に スペースとスラッシュを入れて <input class="abc" type="text" value="abc" name="abc" id="abc" /> に置き換えたいと思います。 よろしくご教授お願いできませんでしょうか?

    • ベストアンサー
    • Perl
  • プルダウンメニューのvalue値取得について

    お世話になります。 プルダウンメニューのvalue値を取得するのに以下のjavascriptとhtmlを作成しました。 3つのカテゴリプルダウンメニューのそれぞれのvalue値をflg_fileへ格納して、その値に対応したHTMLへジャンプという物なのですが、実際に動作させると、main_select02や03でvalue値を4、5と指定しているにもかかわらず、実際に動作させるとジャンプする先はlist_NO"1".htmlとなってしまっています。 これはvalue値がちゃんと取得できていないのか、それともプルダウンメニューは値を設定しても、上から自動的に1、2・・・となるのが仕様なのか、元々の作りがおかしいのか頭を悩ませています。 何がおかしいのか、ご教授頂けますようお願いします。 ■javascriptソース function flg_set(n) { switch(n){ case 1: flg_file = document.selectForm.main_select01.selectedIndex; break; case 2: flg_file = document.selectForm.main_select02.selectedIndex; break; case 3: flg_file = document.selectForm.main_select03.selectedIndex; break; } } function select_list() { parent.select.location.href = "list_NO"+[flg_file]+".html"; } ■HTMLソース <FORM NAME="selectForm"> <td width="10"> </td> <td width="120"><select name="main_select01" onChange="flg_set(1)" onFocus="this.blur()" style="font-size:12px; width:120px;"> <option value="0">▲カテゴリ(1)</option> <option value="1">┗ ページ(1)</option> <option value="2">┗ ページ(2)</option> <option value="3">┗ ページ(3)</option> </select></td> <td width="10"> </td> <td width="120"><select name="main_select02" onChange="flg_set(2)" onFocus="this.blur()" style="font-size:12px;width:120px;"> <option value="0">▲カテゴリ(2)</option> <option value="4">┗ ページ(4)</option> <option value="5">┗ ページ(5)</option> </select> </td> <td width="10"> </td> <td width="120"><select name="main_select03" onChange="flg_set(3)" onFocus="this.blur()" style="font-size:12px;width:120px;"> <option value="0">▲カテゴリ(3)</option> <option value="6" selected>┗ ページ(6)</option> </select> </td> <td width="10"> </td> <td width="100%"><input type="button" value="ページジャンプ" onClick="select_list();"> </td> </form>

  • 動的なセレクトボックスの生成と削除

    CGI(Perl)で、Javascriptを用いWEBアプリケーションを作成しています。 その過程で、追加ボタンを押すとセレクトボックス(5つでひとかたまりです)が増えるJavascriptを作成しています。 しかし、残念ながら削除をする機能をどうしていいか思いつきませんのでお知恵を貸してください。(また、増加ボタンも他にいい方があレバよろしくお願いします。) 今までに作成したのは以下のとおりです。 **********Javascript*********** var copy; function addInput() { copy = document.getElementById('plus') copy.innerHTML="Filter:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <select name='condition'> <option value='and'>AND</option> <option value='or'>OR</option> </select>&nbsp; <select onchange='SetSubMenu(value);'> <option value='Werkstoff'>1.Werkstoff</option> <option value='Shiftfaktor'>2.Shiftfaktor </option> <option value='SurfCorr'>3.SurfCorr</option> </select>&nbsp; <select name='condition'> <option value='like'>like</option> <option value='notlike'>not like</option> <option value='equal'>=</option> <option value='<'><</option> <option value='>'>></option> <option value='<='><=</option> <option value='>='>>=</option> </select>&nbsp; <div id ='Werkstoff' class='secondpulldown'> <select><TMPL_LOOP NAME=EINTRAGWERK> <option value='<TMPL_VAR NAME=WERKSTOFF>'><TMPL_VAR NAME=WERKSTOFF></option></TMPL_LOOP></select></div> <div id ='Getriebe' class='secondpulldown'> <select><TMPL_LOOP NAME=EINTRAGETRIEBE> <option value='<TMPL_VAR NAME=GETRIEBE>'><TMPL_VAR NAME=GETRIEBE></option></TMPL_LOOP></select></div> &nbsp; <input type='button' onclick='addInput()' value='+'>&nbsp; <input type='button' onclick='delInput()' value='-'> <div id='plus'></div>" } </script> **********stylesheet************* <style type="text/css"><!-- .secondpulldown { display: none; } --></style> <table> <tr> <td>Datenbank:</td> <td colspan="5"> <select name="datenbank"> <option value="bank1">DATEN BANK 1</option> </select> </td> </tr> <tr> <td>Filter:</td> <td> <select name="condition"> <option value="and">AND</option><option value="or">OR</option> </select> </td> <td> <select onchange="SetSubMenu(value);"> <option value="Werkstoff">1.Werkstoff</option> <option value="Shiftfaktor">2.Shiftfaktor </option> <option value="SurfCorr">3.SurfCorr</option> </select> </td> <td> <select name="condition"> <option value="like">like</option> <option value="notlike">not like</option> <option value="equal">=</option> <option value="<"><</option> <option value=">">></option> <option value="<="><=</option> <option value=">=">>=</option> </select> </td> <td> <div id ="Werkstoff" class="secondpulldown"> <select> <TMPL_LOOP NAME=EINTRAGWERK><option value="<TMPL_VAR NAME=WERKSTOFF>"><TMPL_VAR NAME=WERKSTOFF></option></TMPL_LOOP> </select> </div> <div id ="Getriebe" class="secondpulldown"> <select> <TMPL_LOOP NAME=EINTRAGETRIEBE><option value="<TMPL_VAR NAME=GETRIEBE>"><TMPL_VAR NAME=GETRIEBE></option></TMPL_LOOP> </select> </div> </td> <td> <input type="button" onclick="addInput()" value="+"> <input type="button" onclick="delInput()" value="-"> </td> </tr> <tr> <td colspan='6'><div id="plus"></div></td> </tr> </table> よろしくお願いします。

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

    $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
  • UWSCを使用して、ドロップダウンリストを操作

    お世話になります。 UWSCにてマクロを作成していますが、ドロップダウンリストを選択して操作する事ができずに、 止まってしまっています。 現在は、画像認識で選択し、マクロ上のKBの操作で選択する形を取ってますが、毎回マウスポインターが移動してしまい、マクロを動かしていると他の事ができません。 UWSCのマクロで、指定したリスト上の値を選択する事可能でしょうか 例)マクロ上で自動でリストから「いいい」を選択して、決定ボタン押下するなど。 === 対象ページの記述は下記の様な形です 2つリストがあり、それぞれに決定ボタンがあります。 <td class="b2"align="center"> <select name=mode> <option value="aaa">あああ <option value="bbb">いいい <option value="ccc">ううう <option value="ddd">えええ <option value="eee">おおお </select> </td> <td class="b2"align="center"><input type="submit"style="background-color:#9370DB;color:#FFFFFF;border:2 solid BFEFFF" value="決定"></td> <select name=mode> <option value="aaa">かかか <option value="bbb">ききき <option value="ccc">くく <option value="ddd">けけ <option value="eee">こここ </select> </td> <td class="b2"align="center"><input type="submit"style="background-color:#9370DB;color:#FFFFFF;border:2 solid BFEFFF" value="決定"></td>

専門家に質問してみよう