0

ブレークタグがたくさんある文字列があります。

残念ながらそれらは不規則です。

<Br> <BR> <br/> <BR/> <br />等...

私は nokogiri を使用していますが、ブレークタグごとに文字列を分割するように指示する方法がわかりません....

ありがとう。

4

4 に答える 4

3

正規表現を中断できる場合は、次の区切り記号を使用します。

<\s*[Bb][Rr]\s*\/*>

説明:

1 つの左山かっこ、0 個以上のスペース、B または b、R または r、0 個以上のスペース、0 個以上のスラッシュ。

正規表現を使用するには、こちらをご覧ください:
http://www.regular-expressions.info/ruby.html

于 2009-09-21T18:57:49.633 に答える
2

したがって、iftrue の応答を実装するには:

a = 'a<Br>b<BR>c<br/>d<BR/>e<br />f'
a.split(/<\s*[Bb][Rr]\s*\/*>/)
=> ["a", "b", "c", "d", "e", "f"]

...HTML ブレーク間の文字列のビットの配列が残ります。

于 2009-09-21T19:15:51.407 に答える
1

Pestoの99%はそこにありますが、Nokogiriは、宣言内のテキストをラップしないドキュメントフラグメントの作成をサポートしています。

 text = Nokogiri::HTML::DocumentFragment.parse('<Br>this<BR>is<br/>a<BR/>text<br />string').children.select {|n| n.text? and n.content } 
puts text
# >> this
# >> is
# >> a
# >> text
# >> string
于 2009-09-22T13:42:54.213 に答える
0

Nokogiri を使用して文字列を解析すると、それをスキャンして、テキスト要素以外を無視できます。

require 'nokogiri'
doc = Nokogiri::HTML.parse('a<Br>b<BR>c<br/>d<BR/>e<br />f')
text = []
doc.search('p').first.children.each do |node|
  text << node.content if node.text?
end
p text  # => ["a", "b", "c", "d", "e", "f"]

Nokogiri は全体を でラップするため、最初の p タグを検索する必要があることに注意してください<!DOCTYPE blah blah><html><body><p>YOUR TEXT</p></body></html>

于 2009-09-21T19:02:35.193 に答える