
いつもお世話になっております。
rubyで分からないことがあります。
ご存知の方がおられましたら、ご教授お願い致します。
【質問】
以下の文字列があるとします。
(文字列)
<!-- Advertiser 'XXX', Include user in segment 'test' - AAA -->\n<img src=\"BBB\" width=\"1\" height=\"1\" />\n<!-- End of segment tag -->\n<!-- Advertiser 'XXX', Exclude user from segment 'test' - AAA -->\n<img src=\"CCC\" width=\"1\" height=\"1\" />\n<!-- End of segment tag -->
この文字列を以下の様に変数1、変数2に入れたいのですが、
どのようにプログラムを記述すればよいでしょうか?
(変数1の内容)
<!-- Advertiser 'XXX', Include user in segment 'test' - AAA -->\n<img src=\"BBB\" width=\"1\" height=\"1\" />\n<!-- End of segment tag -->
(変数2の内容)
<!-- Advertiser 'XXX', Exclude user from segment 'test' - AAA -->\n<img src=\"CCC\" width=\"1\" height=\"1\" />\n<!-- End of segment tag -->
No.2ベストアンサー
- 回答日時:
※申し訳ありません。
余計なエスケープが含まれていましたので削除しました。a , b = str.split(/\n(?=<!--\s+Advertiser)/)
(?= )は正規表現の先読みという機能です。
\nの後に <!-- Advertiser という文字列が続く「位置」にマッチします。
位置というのがポイントです。<!-- Advertiser自信を含めてしまうと、
splitした際に<!-- Advertiserが消えてしまいます。
【先読み有りの場合】
\n <!-- Advertiser
↑↑
「\n」と「\nと<!-- Advertiserとの間の位置」にマッチし、
<!-- Advertiser 自身は含まれません。
【先読み無しの場合】
\n<!-- Advertiser
↑↑↑↑↑↑↑↑
「\n<!--\s+Advertiser」にマッチし、<!-- Advertiserも含まれてしまう。
この2つの動きを比べてみると詳細がわかると思います。
a , b = str.split(/\n<!--\s+Advertiser/) #先読み無し
a , b = str.split(/\n(?=<!--\s+Advertiser)/)#先読み有り。
No.1
- 回答日時:
仕様がよくわかりませんが、
a , b = str.split(/\n(?=\<!\-\-\s+Advertiser)/)
p a
p b
もっと厳格に開始と終了タグをチェックするとそれなりの処理が必要になります。
この回答への補足
ご回答ありがとうございます。
実際にプログラムに入れたら出来ました。
申し訳ありませんが、split()の記述でわからないところがありますので、
教えてください。
str.split(/\n(?=\<!\-\-\s+Advertiser)/の
\n(?=\<!\-\-\s+Advertiser)部分のどのような処理を行っているのでしょうか?
基本的なことで大変申し訳ございませんが、
ご教授頂けましたら幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
(再質問)エクセルのマクロボ...
-
パソコンのスクリーンセーバー...
-
pandasでsqlite3にテーブル作成...
-
WIN11にオフイスを複数入れるこ...
-
回復ドライブとインストールメ...
-
英数字を含む文字列(0-9,A-Z)...
-
VBScriptでExcel(2019)上のデー...
-
C++のCreateFile関数で、ASCII...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
BNF(バッカス・ナウア・記法)
-
ビット否定(反転)の記号はど...
-
正規表現で、英数記号を含むパ...
-
箇条書きの番号のような感じで...
-
『マッチしない』をなるべく短く
-
VBScriptでの正規表現パターン...
-
EXCEL VBA Like演算子 パターン...
-
演算子等の検索方法
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
Excel-vba 文字列と変数を...
-
フォームを開くときに、コンボ...
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
Windows11のカメラで動画を撮り...
-
配列の値を置換するにはどうす...
-
数字の位ごとの値を表示するプ...
-
VB6.0-整数と余りを求める
-
excelの、ある数式内の{}の意...
-
COLUMN(1:1)の意味を教え...
おすすめ情報