Vimプログラミング言語で文字列を逆方向に一致させるには?

Vimプログラミング言語で文字列を逆方向に一致させるには?

[abc]文字列のセット内の文字の最後のインデックスを探したいのですが、abcabc検索は文字列の終わりから始める必要があります。

" Returns the 0th index but I want the 5th.
let a=match('abcabc', '[abc]')

Vimの「4.組み込み関数」(:h functions)を見てみましたが、有望に見える唯一の方法はreverseリストでのみ機能する方法でした。同様の関数がlen文字列、数字、リストも処理するように設計されているため、これらの制限は理解されていません。

この問題を解決するために、次の機能を考えました。

function! s:Rvrs(str)
  let a=len(a:str)      
  let b=a - 1
  let c=''
  while b >= 0
    let c.=a:str[b]
    let b-=1
  endwhile
  return c
endfunction

だから私は言うことができますlet a=match(s:Rvrs('abcabc'), '[abc]')

ベストアンサー1

この質問を読んでみると、

echo match('abcabc', '.*\zs[abc]')

答えは一つです。テキストで最後に表示されるパターンの先頭を返します。

'abcabc'[0:start_of_match+len(matched_string)-1]最後のアイテムの前に他のアイテムが必要な場合は、重なりを許可するには文字列を切り取り、処理する必要があります([abc]代わりにそのアイテムを探しているので、あなたの場合は意味がありませんabc)。'abcabc'[0:start_of_match-1]それ以外の場合。

編集:申し訳ありません。 Chris Johansenのコードが行っていることを見逃しました。

おすすめ記事