2014-10-16 2 views
1

나는 Sublime Text를 사용하고 있으며 Find/Replace를 사용하여 HTML을 Markdown으로 만들기를 원합니다. 내가 만난 한 가지 문제는 여러 경기를 대체하는 방법입니다.찾기/바꾸기에서 regex를 사용하여 여러 일치 항목 바꾸기

HTML은 다음과 같습니다 :

<blockquote> 
    <p> text 1 </p> 
    <p> text 2 </p> 
    <p> text 3 </p> 
    <p> text 4 </p> 
</blockquote> 

그리고 나는 내가 인용구 내 페이지 태그를 캡처 할 수

<blockquote>\n(^.+$\n)+?.+</blockquote> 

를 사용

><p> text 1 </p> 
><p> text 2 </p> 
><p> text 3 </p> 
><p> text 4 </p> 

로 변경하려면. 그러나 그것을 대체하는 방법?

고마워요.

+0

뭔가.com/questions/15268504/collapse-and-capture-a-repeat-pattern-in-a-regex-expression/15418942 # 15418942 그러나 내 솔루션이 중첩을 처리 할 수 ​​있다고 생각하지 않습니다. 당신의보기, 그러나 다른 곳에 나타날지도 모른다). – nhahtdh

답변

1

간단한 테스트 케이스에 대해 테스트 해 보았습니다. 주된 문제는 정규식을 추가로 사용자 정의해야 할 수도있는보다 복잡한 입력에 대해 작동하거나 작동하지 않을 수 있다는 것입니다. 이 마지막 줄을 일치로

(?:<blockquote>\s*+|(?<!\A)(?<!</blockquote>)\G)(.*)\s++(?:</blockquote>)? 

이 솔루션은 닫는 태그를 정리합니다 :

손쉽게 찾을 수 있습니다. 끝 태그 </blockquote>이 제거되지 않은 첫 번째 해결 방법에서주의 사항을 수정합니다.

\n> $1 

를 사용하여 정규 표현식 모드와 하이라이트가 대체됩니다 것을 확인하기 위해 일치 :

는 교체하십시오.

모든 선행 공백을 제거하고 > 사이에 공백 만 남겨 둡니다.

위의 정규 표현식은 정규 표현식만으로이 문제 클래스를 해결하는 질문에 대한 내 대답에 기초하여 작성되었습니다. Collapse and Capture a Repeating Pattern in a Single Regex Expression.

내 솔루션은 두 번째 구조를 기반으로하고 현재 솔루션은 첫 번째 구조를 기반으로합니다.

(?:<blockquote>\s*+|(?!\A)\G\s++(?!</blockquote>))(.*) 
0

당신은 두 단계로이 작업을 수행 할 수 있습니다 초기 용액은 경우에 당신은 종료 태그 더 유연하게 (예를 들어, 무료 간격) 정규식을 사용자 정의하려면, 여기에 인용한다.

1) <blockquote>((?:(?!<\/blockquote>).)*)<\/blockquote>$1으로 바뀝니다.

데모보기

http://regex101.com/r/dZ1vT6/35

2) ^\s+<

참조 데모로 교체합니다. HTTP : // 유래과 유사한

http://regex101.com/r/dZ1vT6/36

관련 문제