▽1
●
a-kuma3 ベストアンサー |
質問がふわっとしているので、探り気味に。
スクレイピングだと、書き捨てのスクリプトも多いので、ぼくは、こんな感じで書くことが多いです。
while 一行ずつのループ line = ... # 一行の文字列のつもり if /<input .*name="input"/ =~ line then # 抽出対象の行を特定する if のつもり if /value="([^"]+)"/ =~ line then # value の値をグループ化する正規表現でマッチ puts $1 # グループ化した対象を $1 で抽出 end end end
最初は、一番内側の if が無い状態で試して、抽出対象の行だけを抜き出せるかを確認してから、その行から対象の文字列を抜き出す。
文字列を抜き出すときは、正規表現でマッチして () でグルーピングして取り出すのが分かりやすいです。
正規表現が長くなると、ソースが水楽なるので、こんな感じで書くことも。
RE_LINE = /<input .*name="input"/ RE_WORD = /value="([^"]+)"/ while 一行ずつのループ line = ... # 一行の文字列のつもり if RE_LINE =~ line then # 抽出対象の行を特定する if のつもり if RE_WORD =~ line then # value の値をグループ化する正規表現でマッチ puts $1 # グループ化した対象を $1 で抽出 end end end