루비 분할 정규식과 함께 - 정규식은 내가 원하는 것을하고 있지 않다.
string = "<p>para1</p><p>para2</p><p>para3</p>"
para2 텍스트를 나누고 싶습니다.
["<p>para1</p>", "<p>para3</p>"]
때로는 para2가 p 태그로 래핑되지 않을 수도 있습니다. p 바깥 쪽과 안쪽의 선택적 공백). 이 작업을 수행 할 것이라고 생각 :
string.split(/\s*(<p>)?\s*para2\s*(<\/p>)?\s*/)
하지만,이 얻을 :
["<p>para1</p>", "<p>", "</p>", "<p>para3</p>"]
일치하는 패턴으로 시작 및 끝 p 태그를 당기는 - 그들은 일부로 제거해야합니다. 스플릿. 루비의 정규 표현식은 기본적으로 욕심이 많아서 그들이 끌어 들여질 것이라고 생각했습니다. 그리고 이것은 분할 대신에 gsub을 수행하면 확인 된 것 같습니다 :
string.gsub(/\s*(<p>)?\s*para2\s*(<\/p>)?\s*/, "XXX")
=> "<p>para1</p>XXX<p>para3</p>"
은을 가져 와서 얻었습니다. 여기에서 없애 버리십시오. 누구 아이디어?
고맙습니다. 최대
는 기억, 당신은 진정으로 정규 표현식으로 HTML을 구문 분석 할 수 없다. 이 문자열이 어떤 식 으로든 외부 입력에 종속되면 hpricot 또는 nokogiri와 같은 HTML 구문 분석기를 사용하십시오. – Matchu