2017-05-13 5 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의 위치 만 찾는 것입니다. 나는 그 전에 어떤 것도 신경 쓰지 않습니다.

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

마지막 ABC의 위치를 ​​반환 어느 : 내 원하는 출력해야한다. 이 작업을 수행하는 간단한 방법이 있습니까, 아마도 내가 모르는 와일드 카드를 사용하고 있을까요? 나는 포럼과 온라인에서 보았지만 나는 보편적 인 해결책을 찾을 수 없다.

중요 정보 :이 특정 문자열의 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 아마도'sapply (c ('ABC', 'DAB'), function (pat) 스트라이크 위치 _last_regex (x, pat)) [1,]' – akrun