• 締切済み

正規表現

次の文字列の<div>タグで囲まれた部分を取得したいです。 <div>タグは一番最初のもの ------------------------------------------------------------------ <div>ここは何文字かわからない</div> このうしろにも</div>が何回かきます。 ------------------------------------------------------------------ ですので、最初に一致した</div>で終わりにしたいです。 処理時間もその後のテキストを見なくてもよくなるでしょうし。 @"<div>{.}\A(</div>))" こうした所マッチしすぎてエラーになってしまいました。 よろしくお願いしまうs。

  • Java
  • 回答数2
  • ありがとう数1

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

いわゆる「PCRE」なら \A も使えます>#1. さておき, ・「マッチしすぎてエラーになってしまいました」とか「マッチするものが多すぎてエラーになってしまいます」って, どういうことなんでしょうか? このマッチさせる部分, 実際にはプログラムとしてどのように書いているんでしょうか. ・この文章だと「どこを取得したいのか」が分からない. 「最初の <div> から最初の </div> まで」と「最初に現れる </div> とそれに対応する <div> の間」とでは意味が異なりますよね. で, この文章ではどっちなのか判断できない. あと, C# なら「その他(プログラム)」か「C・C++」が適当なところでしょう. いずれにしても, 「C# である」ことは明記すべきですが.

noname#212058
noname#212058
回答No.1

\A が使える正規表現を私は知らないのですが、文法が 間違っていませんか? 使用している言語(もしくはテキストエディタ)を明示して もらえないと、回答が難しいのですが、単純に考えれば、 以下で行けると思います。 <div>.*?</div> ※データに改行を含んでいる場合、使用する言語(もしくは  テキストエディタ)によってはうまくいきません。

timespace
質問者

お礼

ちなみにJavaカテゴリに質問した事をご容赦下さい。 C#カテゴリが無かったので一番近そうなカテゴリを選びました。

timespace
質問者

補足

ご回答ありがとうございます。 VS2012 の C# です。 それは試してみたのですがマッチするものが多すぎて エラーになってしまいます・・・ おしりの</div>を【最初にマッチした】のような 特殊文字があればいいのですが・・・ どうしたものやら

関連するQ&A

  • 正規表現

    分かりづらい質問で申し訳ありませんが、PHPの正規表現で教えて下さい。 現在下記のような文字列があります。 見やすく改行しましたが、本来は改行はなく、1行です。 最初にPタグがあり、次に複数のクラスが付いたdiv(これを①とします)、同じく複数のクラスが付いたdivタグ(これを②とします)があるような構造です。 このdivタグの中にはfigureタグ、その中にimg タグがあります。 ②番目のdivの中のimgのsrcには特定の文字列があります。 この特定の文字列を含む親のdivタグ全体を抜き出す正規表現を書きたいと思っています。 つまり、正規表現の結果下記部分が抽出できればと思います(これを「正解」とします)。 <div class="(省略)"> <figure> <img src="{特定の文字列}"> </figure> </div> 現在このように記述しましたが、①、②全てのdivが取得されてしまっている状態です。 「/<div class="se-component se-image-container __se__float-none" contenteditable="false">(?>).*<\/div>/i」 これを「正解」のように抽出するにはどのような正規表現になるのでししょうか? よろしく御願い致します。 <p>ghoge</p> <div class="se-component se-image-container __se__float-none" contenteditable="false"> <figure style="margin: 0px;"><img src="data:image/jpeg;base64,/9j/4AA" alt="" data-rotate=""> </figure> </div> <div class="se-component se-image-container __se__float-none" contenteditable="false"> <figure style="margin: 0px;"><img src="{特定の文字列}" alt="" data-rotate=""> </figure> </div>

    • ベストアンサー
    • PHP
  • 正規表現が得意なかた教えてください

    以下のような文字列から <honyarara><tekuteku>2バイト文字列</tekuteku></honyarara> の <tekuteku>2バイト文字列</tekuteku> この部分にマッチさせたいのですが ちなみに直近にあるtekutekuタグはタグの名称は色々なので、tekutekuという文字を使ってマッチはできません。 要は2バイト文字列をはさんだ直近のタグまでをマッチさせたいのです。 2バイト文字列は [^\x01-\x7E] によって得られることはわかったのですが、 それを挟んだタグまでをマッチさせる方法をお教え下さい。

  • 正規表現について

    タグで囲まれた文字列以外に含まれるアルファベットに一致させたいのですがうまくいかず困ってます。 例えば以下のようなHTMLの文字列があったとします。 ---------------------------------------------------------------------------- PHP: Hypertext Preprocessorとは、動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語、およびその言語処理系である。<br> 詳しくは以下のURLを参照されたし。<br> <a href="http://ja.wikipedia.org/wiki/PHP:_Hypertext_Preprocessor">リンク</a> ---------------------------------------------------------------------------- "PHP: Hypertext Preprocessor"と"URL"と"HTML"の部分だけに一致させて <br>や<a>などタグで囲まれた部分に含まれるアルファベットや記号には一致しないようにしたいのです。 いろいろ試してみましたが、どうにもうまくいきません。 どなたかお助けください><

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

    正規表現を教えてください。 C#で正規表現を用いた文字列検索を勉強中なのですが、うまくマッチさせることができません。教えていただけないでしょうか。 検索対象の文字列は下のようになります。 キーワード;値; 文字列中に該当するキーワードが存在する場合に、その値を取得するプログラムを考えています。しかし、私の正規表現では2つ目の「;」を検出してしまい、キーワードのみを取得することが出来ずに困っています。 見当違いの表記をしているとは思うのですがどなたかお助けください。 match = Regex.Match(line, "^(.*);"); C#初心者なものです。

  • perlでの正規表現について

    文字列のなかの"<タグ>(アルファベット1文字)"すべてに対して置換処理をさせたいのですがうまく動作しません。 現在はこう記述しております。 $str=~ s/(~<(.*?)>\w)/置換文字列/g; 良い方法があれば教えていただけると助かります。

  • 正規表現について教えてください

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

    • 締切済み
    • PHP
  • 正規表現について

    お世話になります。 ●●● ●●● という文字列かどうか判断する正規表現を作成したいです。 条件としては、 ・「文字1 (←全角スペース)文字2」という感じで、文字1と文字2に全角スペースが挟まれている感じで、文字列の先頭にも末尾にも空白文字は入ってはいけない(真ん中に1つのみ) ・文字1と文字2には、数字・空白以外の文字が入る(主に感じ・ひらがな・カタカナが入る)(文字数は一文字以上) といったところです。 自分で作成した正規表現は、 $pattern = '/^([\d\S])+ ([\d\S])+$/'; if( !preg_match($pattern,$chkStr) ) print "マッチしていない"; } なんですが、どうもマッチしてほしい文字にマッチしていないようなのです。 お手数ですがご教授ください。

    • ベストアンサー
    • PHP
  • 正規表現でのマッチを複数取得したい

    正規表現にて、文字列のhtmlタグ部のみを配列にして取得したいのですが、初めにマッチする1つしか返り値を取得できません。 ----ソース--------------------- $this->target_str <<<EOS <test1>aaa</test1> <test2>bbb</test2> EOS; preg_match ( "/<.*?>/imsu" , $this->target_str, $RES_ARR ); ------------------------------- 上の例だと、 $RES_ARR[0] => "<test1>" となり、残りのタグは取得できないのです。 google検索にて発見した、'マッチした後も続けて検索する'というオプション'g'をつけてみたのですが、'g'に対してエラーが出てしまいます。 どなたか解決策をお持ちの方いらっしゃいましたらよろしくお願いします!

    • ベストアンサー
    • PHP
  • PHP5の正規表現でうまくマッチできない

    PHP5の正規表現で文字列中の独自タグをパースしようとしていて、 うまくいかず困り果てています。 正規表現パターンは、/<tag>.*<\/tag>/ 対象文字列は、<tag>こんにちは</tag><tag>こんばんは</tag> preg_match_all('/<tag>.*<\/tag>/', '<tag>こんにちは</tag><tag>こんばんは</tag>', $result) でマッチした文字列は、 $result[0]:<tag>こんにちは</tag> $result[1]:<tag>こんばんは</tag> となることを期待しているのですが、 実際は、 $result[0]:<tag>こんにちは</tag><tag>こんばんは</tag> となりました。 <tag>タグの間に入る文字列長、文字列フォーマットは不定です。 どうすれば期待通りの振る舞いに出来るでしょうか?

    • ベストアンサー
    • PHP
  • 正規表現でHTMLを変換したい

    HTMLファイルの特定のタグだけを分析して、独自の形に変換したいと思っています。 $html = preg_replace('/<div( [^>]*)?>(?!.*<div[^>]*)(.*?)<\/div>/is', '<div2 \1 value='\2' />', $html); 例えばこんな風にdivタグを分析すればある程度欲しいデータは取得する事が出来るのですが、 ただ単にこれだけだと、一番最後に出てくる一番深いdiv要素の所しか取得出来ません。 うまい事divの組合せ全てを変換する方法は無い物でしょうか

    • ベストアンサー
    • PHP

専門家に質問してみよう