回答編集履歴

4

読みやすいように改行を追加

2015/02/06 11:35

投稿

riocampos
riocampos

スコア241

test CHANGED
@@ -42,7 +42,11 @@
42
42
 
43
43
  ```lang-ruby
44
44
 
45
+ target.lines.select { |line| line.include?('class="red"') }.map do |line|
46
+
45
- target.lines.select { |line| line.include?('class="red"') }.map {|line| line.match(/class="listName">([^<]+).+class="red">([^<]+)/).to_a[1..-1]}
47
+ line.match(/class="listName">([^<]+).+class="red">([^<]+)/).to_a[1..-1]
48
+
49
+ end
46
50
 
47
51
  #=> [["欲しい文字", "(未読:1件)"]]
48
52
 

3

<span class="red">の表示をcodeに変更。

2015/02/06 11:35

投稿

riocampos
riocampos

スコア241

test CHANGED
@@ -1,6 +1,6 @@
1
1
  得られる HTML が間違いなく一行にお書きの要素が入っており、 class 要素の直後に `>` が来ていることを前提とします。
2
2
 
3
- <span class="red"> が入っている行を取得するのは k.tada さんのやり方で良いと思います。
3
+ `<span class="red">` が入っている行を取得するのは k.tada さんのやり方で良いと思います。
4
4
 
5
5
 
6
6
 

2

target.lines.selectで取得出来たものは文字列を含む配列なので訂正。

2015/02/06 11:33

投稿

riocampos
riocampos

スコア241

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- が取得出来ました。
29
+ 含まれた配列が取得出来ました。
30
30
 
31
31
  次にこの文字列から"欲しい文字"と"(未読: x件)"を取得するときに **正規表現を使う** とすると
32
32
 

1

句点を追加

2015/02/06 11:32

投稿

riocampos
riocampos

スコア241

test CHANGED
@@ -70,7 +70,7 @@
70
70
 
71
71
  では Nokogiri を使ってみます。
72
72
 
73
- 残念ながら元の HTML が a タグも span タグも並列に入っており、それらを覆う div タグが入っていないので、すこし面倒になります。具体的には <span class="red"> を選択した後に兄要素を取得する必要があります。 XPath ならば preceding-sibling を使いますし、 CSS では選択不可能でした(CSS4 で可能になるそうですが)
73
+ 残念ながら元の HTML が `a` タグも `span` タグも並列に入っており、それらを覆う `div` タグが入っていないので、すこし面倒になります。具体的には `<span class="red">` を選択した後に兄要素を取得する必要があります。 XPath ならば preceding-sibling を使います CSS では選択不可能でした(CSS4 で可能になるそうですが)
74
74
 
75
75
 
76
76