2010-02-02 6 views
3

< swf ...> ..... </swf>가 많은 문서가 있습니다. 나는이 모든 것을 제거하고 싶다. vi를 사용할 때 입력 할 때VI에서 정규식 검색 및 바꾸기

나는 이것이 효과가 있었으면 좋겠다. 여기

답변

8

: 당신은 또한 두 행으로 분할 할 수있는 태그가있는 경우

:%s!<swf.\{-}/swf>!! 

, 당신은 . 일치를 만들기 위해 \_ 수정을 추가 할 수도 줄 바꿈 :

:%s!<swf\_.\{-}/swf>!! 

이 당신이 태그와 당신이 바로 태그를 제거하고 내용을 유지 얻을하려는 경우가 포함 모두를 제거 할 가정

01 2,

주 :

  • 탈출 할 필요가 없습니다 < 또는 >
  • 당신이 원하는 당신 구분 어떤 패턴을 선택할 수 있습니다
  • : Vim은 당신이 대체 명령에 s 후 넣어 첫 번째 문자를 사용합니다 : 이것은 당신의 패턴

편집을 슬래시 탈출 할 필요성을 없애 : 귀하의 코멘트

을 한 후 내 대답을 확장
  • 이 정확히 나는 단지 내가
  • 내가하지 않았다 패턴에 백 슬래시를 인용해야한다 (위의 내 두 번째 점을 참조)하지 않는 것이 그래서 ! 대신 /의 사용/STRING/교체가/g와 같은 내가 :set gdefault이 있기 때문에의 끝에서 g 수정을 추가 내 .vimrc 영원히 이후
  • \{-}입니다 (이것은 기본적으로 빔 대신 /g 단지 첫째, 따라서 되 돌리는 의미의 라인에있는 모든 일치를 대체된다는 것을 의미합니다)가 " ungreedy "버전 인 * 한정 기호를 사용합니다. 즉, 0 이상의 이전 원자와 일치하지만 가능한 한 적은 숫자는 입니다. e - 이렇게하면 검색 패턴이 마지막 "대신 닫는 태그"로 확장되도록 할 수 있습니다.

HTH

+0

는 치료를 작동 할 수, 당신이 감사 감사! 궁금한데,이 작업은/STRING/REPLACE/g 형식을 사용하지 않고 어떻게 작동합니까? 그리고 {-}는 무엇을 의미합니까? – ktec

+0

내 대답이 내 댓글에 대한 세부 정보로 업데이트되었습니다. –

+0

감사합니다. – ktec

3

문제는 당신이 그것을 말하고있다 있도록 []는 문자 클래스는 SWF의 여는 태그와 닫는 태그 사이의 문자 s, wf는 순서에 상관없이 어디서나 나타나지 않을 수 있다는 것입니다.

는 대신 비 욕심 일치를 시도 할 수 : 기본적으로 줄 바꿈을 허용하지 않습니다

\<swf.\{-}\/swf\> 

.있다.

나는 Vim을 사용하지 않으므로이 구문을 발견하기 위해이 guide을 사용했다. 나는 그것이 옳았기를 바란다.

는 이 명령으로 버퍼의 모든 사람들을 제거 할 수 있습니다