2012-01-26 5 views
0

내가 Rubular 나에 다음 식을 테스트 한 한에 Rublar을 다음하지하고 성공적으로 HTML의 코드 조각에 대해 일치 :레일/루비 정규 표현식

그러나
Official Website<\/h3>\s*<p><a href="([^"]*)" 

, 내가 루비의 표현을 실행할 때, 다음 코드를 사용하여 일치하는 항목을 반환하지 않습니다. 나는 그것을 "Official \ s * Website"로 축소했으며, 그 내용과 일치하지만 더 이상은 없습니다.

Rubular를 추적하도록 Ruby/Rails를 구성하기 위해 설정해야하는 추가 옵션이 있습니까?

matches = sidebar.match(/Official\s*Website<\/h3>\s*<p><a href="([^"]*)"/) 
    if matches.nil? 
    puts "no matches" 
    else 
    puts "matches" 
    end 

이것은 내가에 일치하고있어 조각의 관련 부분입니다 :

<h3>Official Website</h3><p><a href="http://website.com" target="_blank">website.com</a></p> 
+0

일치하는 스 니펫은 무엇입니까? – phoet

+3

정규식을 사용하여 HTML을 구문 분석하는 대신 [nokogiri] (http://nokogiri.org/)를 항상 사용할 수 있습니다. HTML은 매우 느슨한 "표준"이므로 올바르게 구문 분석하기가 매우 어렵습니다. '' 태그에 다른 속성을 삽입하거나 잘못된 공간을 사용하면 정규 표현식을 망칠 것입니다. – tadman

+0

@phoet - 질문에 스 니펫을 추가했습니다. – alpheus

답변

0

정규 표현식이 올 것입니다. rubular는 코드가하는 것과 같은 방식으로 작동해야합니다.

내가

irb(main):006:0> sidebar = ' <h3>Official Website</h3><p><a href="http://website.com" target="_blank">website.com</a></p>' 
=> " <h3>Official Website</h3><p><a href=\"http://website.com\" target=\"_blank\">website.com</a></p>" 
irb(main):007:0> sidebar.match(/Official\s*Website<\/h3>\s*<p><a href="([^"]*)"/) 
=> #<MatchData "Official Website</h3><p><a href=\"http://website.com\"" 1:"http://website.com"> 

루비 1.8.7과 1.9.3에 대해 그것을 테스트 - 당신은 신속하게 물건을 작동하지 않는 이유를 확인하려면

1.9.3p0 :005 > sidebar = ' <h3>Official Website</h3><p><a href="http://website.com" target="_blank">website.com</a></p>' 
=> " <h3>Official Website</h3><p><a href=\"http://website.com\" target=\"_blank\">website.com</a></p>" 
1.9.3p0 :006 > sidebar.match(/Official\s*Website<\/h3>\s*<p><a href="([^"]*)"/) 
=> #<MatchData "Official Website</h3><p><a href=\"http://website.com\"" 1:"http://website.com"> 

, 당신은 IRB에서 그것을 시도해야하거나 귀하의 레일 콘솔. 대부분 오타 또는 잘못된 인코딩입니다.