いつもお世話になっております。
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で質問しましょう!
似たような質問が見つかりました
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- PHP PHP echo バックスラッシュの使い方 img要素 2 2023/01/08 22:46
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS imgとpを縦・横に中央揃えする 1 2023/01/17 11:30
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビーリアルのユーザー名を変え...
-
100万件越えCSVから条件を満た...
-
パソコンのスクリーンセーバー...
-
(再質問)エクセルのマクロボ...
-
C言語の入力した文字を反転させ...
-
VBA
-
三項でたとえば交換って
-
英数字を含む文字列(0-9,A-Z)...
-
7セグメント LED ディスプレイ ...
-
Ruby on railsをrails sで立ち...
-
WinSCPで画像のように puttyを...
-
pandasでsqlite3にテーブル作成...
-
1、Rstudioで回帰直線を求める...
-
【メモリ不足で落ちる(python)】
-
パイソンのクラス
-
電子書籍epub変換について
-
VBA メモ帳の上書き保存がしたい
-
Accessで文字列のバイト数読み込み
-
実行時エラー450:引数の数が一...
-
このCをDに変える方法を教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現で、英数記号を含むパ...
-
EXCEL VBA Like演算子 パターン...
-
ビット否定(反転)の記号はど...
-
Rubyで文字列の抽出
-
演算子順位法での関数の扱い
-
VBScriptでの正規表現パターン...
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
EXCEL/VBA 変数の値をクリップ...
-
足して100になるような乱数のア...
-
Excel-vba 文字列と変数を...
-
C言語 exitの使い方
-
excelの、ある数式内の{}の意...
-
配列の値を置換するにはどうす...
-
C言語 列挙型(enum型)変数について
-
VisualStudio2022でC言語プログ...
-
エクセルへのデータの貼付時に...
-
テキストボックスの値を変数に...
-
初心者が簡単なPowerShellスク...
-
Variant型で宣言してるのにEmpt...
おすすめ情報