2014-11-08 5 views
1
string = c("Hello-", "HelloA", "Helloa") 
    grep("Hello$[A-z]", string) 

단어 "Hello"다음 문자가 문자 (대소 문자 구분 안함) 인 문자열의 색인을 찾고 싶습니다. 위의 코드는 작동하지 않지만, 그 단어가R : 문자열의 끝을 지정하는 정규 표현식 문자

+0

그래! 알았다. 감사합니다 –

답변

4

를 사용하여 긍정적 인 내다 "안녕하세요"후 편지를 갖고 있기 때문에 나는 인덱스 2와 3을 반환 그렙()를 싶습니다

> string = c("Hello-", "HelloA", "Helloa") 
> grep('Hello(?=[A-Za-z])', string, perl=T) 
[1] 2 3 

(?=[A-Za-z])이 긍정적 예측은 주장 문자열 Hello 다음의 문자는 문자 여야합니다. 문자열 Hello를 다음 단 하나의 문자가있는 경우

또는

> grep('Hello[A-Za-z]', string) 
[1] 2 3 

는 정규식에 $를 추가합니다. $ 우리가 끝났다고 주장합니다.

> grep('Hello[A-Za-z]$', string) 
[1] 2 3 
> grep('Hello(?=[A-Za-z]$)', string, perl=T) 
[1] 2 3 
+0

'grep ('Hello (? i) [A-Z]', string, perl = T)와 같이 대소 문자를 구분하지 않는 수정자를 추가 할 수 있습니다. –

0

"$"는 문자열 끝에 대한 기호이므로 제거해야합니다.

string = c("Hello-", "HelloA", "Helloa") 
grep("Hello[A-z]", string) 
#[1] 2 3 
?regex # to my memory of the "alpha" version of the character class 

grep("Hello[[:alpha:]]", string) 
#[1] 2 3