2017-11-15 24 views
1

私の組織のような構文で、社内の言語を持っている間単語のインスタンス:Vimの正規表現:キャプチャ*最初の*文字

cmo/create/mo1///tri 
createpts/brick/xyz/2,2,2/0.,0.,0./1.,1.,1./1,1,1 

私はVimの構文ファイルを書いています、とをキャプチャしたいと思います最初に 2文字(この場合は/)、で囲まれた単語のインスタンス、は文字自体をキャプチャします。

つまり、正規表現は

create 
brick 

私のソリューションは、これまでのところ、このパターンを使用することで、上記の行から、キャプチャします:

[,/=" "].\{-}[,/=" "] 

しかし/this/and/this/and/thisから、それはキャプチャします/this/and/this/and/this/

この問題は、(i)私の現在の解決策は貪欲で、(ii)/文字もキャプチャします。

ありがとうございます!

+1

肯定的な視点と肯定的な先読みを使用します。私はvimの構文が正のlookbehindの場合は\ @<= '、肯定的な先読の場合は' \ @ = 'であると信じています – ctwheels

+2

' \ zs'マッチリセッタ '^(?:\ w +)?/ \ zs \ w + )\ @ = ' – revo

+1

^、あなたは先読みを避けるために' [^ /] * 'を使い、グループを避けるために' \ w * 'を使うことができます。 – Ryan

答えて

1

一つの可能​​な解決策:

^[^\/]\+\/\zs[^\/]\+\ze\/ 
  • ^アンカーBOLへの検索、
  • [^\/]\+ 1以上の非スラッシュ文字、できるだけ多くの、
  • \/スラッシュ、
  • \zsここから試合を開始、
  • [^\/]\+ 1つ以上の非スラッシュ文字を可能な限り多く使用してください。
+1

この場合も、スラッシュ記号で囲まれた単語は表示されません。 – revo

+1

さて、 '\ ze \ /'を追加するだけです。 – romainl

関連する問題