2017-05-13 14 views
0

この質問は適切であると思います。私はそれがすべての一致の位置や長さを返しますgregexpr使用する場合一方で、それは、私の最初の試合の位置(および長さ)を返しregExprの使用している場合はregexprとの最後のマッチの位置を見つけよう

> x <- "ABCDDDDDABC" 

:私はのような文字列を持っている場合

> regexpr("ABC",x) 
[1] 1 
attr(,"match.length") 
[1] 3 
attr(,"useBytes") 
[1] TRUE 
> gregexpr("ABC",x) 
[[1]] 
[1] 1 9 
attr(,"match.length") 
[1] 3 3 
attr(,"useBytes") 
[1] TRUE 

私がやりたいことは、最後のABCの位置を見つけることだけです。私はその前に気にしません。最後ABCの位置を返す

[1] 9 
attr(,"match.length") 
[1] 3 
attr(,"useBytes") 
[1] TRUE 

: 私の所望の出力がなければなりません。これを行うための簡単な方法はありますか、私が気づいていないワイルドカードを使用しているのでしょうか?私はフォーラムとオンラインで見てきましたが、私は普遍的な解決策を見つけることができません。

重要:この特定の文字列のABC周辺のコンテキストを考慮した正規表現は必要ありません。私は私にそれを養うかもしれないすべての文字列の最後のABCの位置を私に与える何かをしたい。

+0

から便利な機能を使用することができます 'テール(gregexpr( "ABC"、x)は[[1]]、1)' –

答えて

1

我々は、ベースRでstringi

library(stringi) 
as.vector(stri_locate_last_regex(x, "ABC")[,1]) 
#[1] 9 
+0

は完璧に動作しているありがとうございます。私は別の質問をするかもしれない。 – Diesel

+0

@GabrieleGabあなたは 'c(" ABC "、" DCF ")'などと言っていますか? – akrun

+0

@GabrieleGabおそらく 'サプリー(c( 'ABC'、 'DAB')、機能(pat)、ストライプ位置@ラスト_レゲックス(x、pat))[1、]' – akrun

関連する問題