안녕하세요. 모든 HTML 코드가 있습니다. 그 입력에서루비에서 regex로 html을 파싱
data 1 : hello1
data 2 : hello2
data 3 : hello3
: 나는이 결과 싶어 <a>(.*)</a>
안의 텍스트 싶어
<a>
hello1
</a>
<a>
hello2
</a>
<a>
hello3
</a>
안녕하세요. 모든 HTML 코드가 있습니다. 그 입력에서루비에서 regex로 html을 파싱
data 1 : hello1
data 2 : hello2
data 3 : hello3
: 나는이 결과 싶어 <a>(.*)</a>
안의 텍스트 싶어
<a>
hello1
</a>
<a>
hello2
</a>
<a>
hello3
</a>
두 의견을 확장하기를, 다음 노코 기리 코드가 작동합니다 예를 들어. xpath 또는 CSS를 사용할 수 있습니다. 전용 파서는 자신의 정규식을 구르는 것보다 훨씬 강력합니다.
> require 'nokogiri'
=> true
> doc = Nokogiri::HTML("<a>hello1</a><a>hello2</a><a>hello3</a>")
=> #<Nokogiri::HTML::Document:0x3ffec2494f48 name="document" children=[#<Nokogiri::XML::DTD:0x3ffec2494bd8 name="html">, #<Nokogiri::XML::Element:0x3ffec2494458 name="html" children=[#<Nokogiri::XML::Element:0x3ffec2494250 name="body" children=[#<Nokogiri::XML::Element:0x3ffec2494048 name="a" children=[#<Nokogiri::XML::Text:0x3ffec2493e40 "hello1">]>, #<Nokogiri::XML::Element:0x3ffec249dc88 name="a" children=[#<Nokogiri::XML::Text:0x3ffec249da80 "hello2">]>, #<Nokogiri::XML::Element:0x3ffec249d878 name="a" children=[#<Nokogiri::XML::Text:0x3ffec249d670 "hello3">]>]>]>]>
> doc.css('a').each { |node| p node.text }
"hello1"
"hello2"
"hello3"
=> 0
업데이트 : 이미 설치하지 않은 경우 nokogiri gem이 필요합니다.
sudo gem install nokogiri
당신의 설정에 따라, 당신은 또한 앞에 추가해야 할 수 있습니다
require 'rubygems'
LoadError : C : /Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/ custom_require.rb 36 '제가 을 얻었다에서 : C를 : /Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb을 : 36 : 제가 N'필요 '나'N 요구 (IRB를 행 ) : 1 C :/Ruby193/bin/irb : 12 : '
10x : D it worked –
[regexps '에와 HTML을 구문 분석하지 마십시오 (http://stackoverflow.com/questions/1732348/regex-match- open-tags-except-xhtml-self-contained-tags/1732454 # 1732454). – Seki
대신 [Nokogiri] (http://nokogiri.org/)와 같은 전용 HTML 파서를 사용하십시오. – Stefan