루비에 정규식을 사용하여 마크 업 (html)을 캡쳐해야합니다. (yep 나는 이것이 나쁘다는 것을 알고 있지만, 원래 마크 업은 실제로 형식이 잘못되었으므로 어떤 대안도 발견하지 못했습니다. 내가 원래 마크 업을 변경할 수 없습니다 (!와 의미있는 클래스가 전혀 없다)으로정규식을 사용하여 HTML 주석의 내용을 캡쳐
<h3 class="grey" style="font-size:18pt;"><!-- #BeginEditable "Title" -->Sample Title
<!-- #EndEditable --></h3>
<!-- #BeginEditable "Text" --><p>Foo bar </p>
<p>
</p><ul>
<li>Sample li</li>
<p></p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p>Foo bar<span class="blue">Lorem ipsum dolor</span></p></blockquote>
<!-- #EndEditable -->
, 나는 몇 가지 정규식 마법을 사용하기로 결정했습니다 : 그래서 나는 다음과 같다 원본 문서가 있습니다.
나는 그렇게 같은 정규식 코멘트 내에서 내용을 캡처하려고 : 그러나 항상 때이 실패 내부의 내용을 캡처.*
를 사용하여 마크 업 내부
!
있을 때
<!-- #BeginEditable "(Title|Text|Foo)" -->\s*([^!]+)\s*<!-- #EndEditable -->
는 분명히 이것은 실패 html 마크 업입니다 (일반 텍스트가 캡처 됨). 내가 뭔가를 놓친거야?
<!-- #BeginEditable "(Title|Text|Foo)" -->(.*?)(?=<!-- #EndEditable -->)
여기 rubular의 데모입니다 : (? 부정적 예측과 함께, 즉 버전)
'노코 기리'를 사용하십시오. 이것에 대한 완벽한 보석. –
일치하는 컨테이너가 없기 때문에 nokogiri가 도움이 될지 의심 스럽지만 마크 업에있는 컨테이너에 주석 만 표시합니다. Jerry의 대답은 트릭을했습니다! – Figedi