Pregunta

tengo una cadena con un montón de etiquetas de saltos.

desafortunadamente son irregulares.

<Br> <BR> <br/> <BR/> <br /> etc ...

Estoy utilizando nokogiri, pero no sé cómo decirle que para romper la cadena en cada etiqueta de salto ....

gracias.

¿Fue útil?

Solución

Así que para poner en práctica la respuesta de 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"]

... uno se queda con una gran variedad de los bits de la cuerda entre los saltos de HTML.

Otros consejos

Si se puede romper en expresiones regulares, utilice el siguiente delimitador:

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

Explicación:

Una escuadra de soporte izquierda, cero o más espacios, B o B, R o R, cero o más espacios, cero o más barras diagonales.

Para utilizar la expresión regular, mira aquí:
http://www.regular-expressions.info/ruby.html

Pesto de 99% del camino, sin embargo Nokogiri apoya la creación de un fragmento de documento que no ajustar el texto en la declaración:

 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

Si analizar la cadena con Nokogiri, a continuación, puede escanear a través de él e ignorar excepto los elementos de texto cualquier cosa:

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"]

Tenga en cuenta que usted tiene que buscar la primera etiqueta p porque Nokogiri envolverá toda la cosa en <!DOCTYPE blah blah><html><body><p>YOUR TEXT</p></body></html>.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top