2016-09-07 10 views
2

vim regexesを使ってHTMLを折りたたみ、同じ行に開始して終了するHTMLタグを無視しようとしています。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私はそれをさらに分析して、逆参照に関する質問をしました:[ここ](http://stackoverflow.com/questions/39380964/vim-sed-regex-backreference-in-search-pattern)。このバージョン: '<([^ >] +)[>]。* <\/\1>'はより安全になります。 –