2016-09-07 2 views
2

같은 줄에서 시작하고 끝나는 html 태그를 무시하고 HTML 접기에 대해 vim regexes로 작업합니다.Vim Regex for html

지금까지, 나는 <a></a> 같은 태그 잘 작동

if line =~# '<\(\w\+\).*<\/\1>' 
    return '=' 
endif 

을 가지고 있지만 사용자 지정 요소를 처리 할 때 태그 이름에 하이픈이 있기 때문에, 나는 문제로 실행. 예를 들어처럼

, 또한 하이픈을 잡으려고 정규식의 변화에 ​​필요로하는 것은이 요소

<paper-input label="Input label"></paper-input> 

?

+0

정확히 일치하는 부분은 무엇입니까? 이것은 나에게 분명하지 않다. –

+0

죄송합니다. 아마도 도움이 될 것입니다. https://gist.github.com/mhartington/96c226aba980513489a9a6fa1d085ecf 정규식은 샘플 라인에서 시작하고 끝나는 태그와 일치해야합니다. – mhartington

답변

2

(때문에 this link의 갱신) 올바른 정규식은 다음과 같습니다

<\([^ >]\+\)[ >].*<\/\1> 

또는

<\([^ >]\+\)\>.*<\/\1> 

[^ >] 중요하다. 이 문자는 whitespace 또는 >까지 일치합니다. 즉 apaper_input

+0

감사합니다. 흥미 롭군요, 정보 주셔서 감사합니다! – mhartington

+0

@mhartington 솔직히 말해서 검색 패턴에서 역 참조를 사용한 적이 없습니다. 그것은 작동하는 것으로 보이지만 이것이 올바른 방법인지 확실하지 않습니다. –

+0

@mhartington 나는 그것을 더 분석하고 있었고 역 참조에 관한 질문을했다 : [here] (http://stackoverflow.com/questions/39380964/vim-sed-regex-backreference-in-search-pattern). 이 버전 : '<([^ >] +) [>]. * <\/\1>'이 더 안전합니다. –