- ベストアンサー
正規表現に困っています!!
以下のような文字列にある「@1」・「@2」・「@3」・「@4」を抜き出したいのですが、 どんな正規表現を使用すれば良いか教えて頂けると非常に助かります。 <!-- #BeginLibraryItem "/Library/image01.lbi" -->\r\n <div class="@1"><img src="@2" alt="@3"></div>\r\n <p class="captionBlockA01 center">@4</p>\r\n <!-- #EndLibraryItem -->
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
[ANo.2]> 厳密に表現してください 何のことかわからないかもしれないから、 具体的に @1 についてだけ、わからないところを書いてみるね。 前提として、正規表現を適用したい文字列は、HTML文書かHTML 文書片だとするね。 1) @1 は、class 属性でなければならないか、否か 2) @1 は、div 要素の属性の値でなければならないか、否か 3) @1 の値を属性に持つ要素は、@1 の値持つ属性が唯一の属性か、否か 4) @1 の値を属性に持つ要素は、img 要素を子に持たなければならないか、否か 5) @1 の値を属性に持つ要素は、唯一の要素を持たなければならないか、否か 6) @1 の値を属性に持つ要素の次の要素は、p 要素でなければならないか、否か 7) @1 の値を属性に持つ要素の次の要素は、class 属性を持たなければならないか、否か 8) @1 の値を属性に持つ要素の次の要素の class 属性は、captionBlockA01 と center を値に持たなければならないか、否か 9) @1 の値を属性に持つ要素の、次の要素の class 属性は、captionBlockA01 と center 以外の値を持つことが許容されるか、否か 10) @1 の値を属性に持つ要素は、次の要素の子要素は、テキストではない要素が許容されるか、否か 11) @1 の値を属性に持つ要素は、直前に、『 #BeginLibraryItem "/Library/image01.lbi" 』の文字列を含むコメントを持たなければならないか、否か 12) @1 の値を属性に持つ要素は、直前のコメントの #BeginLibraryItem 前の空白の数は、複数が許容されるか否か 13) @1 の値を属性に持つ要素は、直前のコメントの "/Library/image01.lbi" の前の空白の数は、複数が許容されるか、否か 14) @1 の値を属性に持つ要素は、直前のコメントの "/Library/image01.lbi" の後の空白の数は、複数が許容されるか、否か 15) @1 の値を属性に持つ要素は、直前のコメントの文字列は、#BeginLibraryItem と "/Library/image01.lbi" 以外の文字列を含むことがが許容されるか、否か 16) @1 の値を属性に持つ要素の次の要素の、直後に、『 #EndLibraryItem 』の文字列を含むコメントを持たなければならないか、否か 17) @1 の値を属性に持つ要素の次の要素の、後のコメントの #EndLibraryItem の前の空白の数は、複数が許容されるか、否か 18) @1 の値を属性に持つ要素の次の要素の、後のコメントの #EndLibraryItem の後の空白の数は、複数が許容されるか、否か 19) @1 の値を属性に持つ要素の次の要素の、後のコメントの文字列は、#EndLibraryItem 以外の文字列を含むことが許容されるか、否か 文書で希望の内容を厳密に定義することが難しいなら、自分で正規表現を覚えたほうがいいとおもう。 正規表現を書いてみてうまく動かないなら、それを質問すれば、間違いを指摘するのは回答者にとってそれほど難しいことじゃないから。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
#1 への補足では 「<div class="~">の~を抜き出して、"@1"という文字列を得たい。」 となってるんだけど, 質問文ではその他にも抜き出したいことになってます. たとえば @4 なんか, まったくこの形じゃないよね. 何を抜き出したいのか, もっと厳密に表現してください.
- kmee
- ベストアンサー率55% (1857/3366)
○使用する言語/ツールは何でしょう?正規表現は言語/ツール毎に微妙な違いがあります。 ○「以下のような文字列」とありますが、具体的にどんなところを「抜き出し」たいのでしょうか?また、「抜き出す」とはどのようなことしたいのでしょうか? <div class="@1"> を例にすれば (1)<div class="~">の~を抜き出して、"@1"という文字列を得たい。~の部分は変わるので、その内容を得たい。 (2)@1 にマッチさせて、別な文字列と置き換えたい。 @1のある場所は div class=の後とは限らない。 とでまったく違うものになります。 また、@1~@4までなのか、「@数字」の形式で数字はどこまであるのか、「@英数字」で数字以外もあるのか、などでも変わります。 よくある形式だと、(2)の目的なら @[1-4] になると思います。Perlだと@はリスト変数を表わすので \@[1-4]になるでしょう。
補足
お忙しいところ、ご回答ありがとうございます。 補足説明させていただきます。 使用する言語は、JavaScriptです。 ツールは、CMSツール(HTML作成ツールのようなもの)で保障ブラウザはIE7・8です。 目的として、(1)となります。
お礼
お忙しいところ、ご回答ありがとうございます。 希望する内容を厳密に定義することが困難です。 正規表現を勉強した上で再度、質問させて頂きます。 ありがとうございました。