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

我希望找到單詞「Hello」後的下一個字符是字母(不區分大小寫)的字符串的索引。上面的代碼不工作,但我想的grep()返回指數2和3,因爲這些詞有R:指定字符串結尾的正則表達式char是一個字母

+0

是!得到它了。謝謝 – 2014-11-08 05:34:16

回答

4

使用積極的前瞻後「你好」的信

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

(?=[A-Za-z])這種積極的先行斷言字符串Hello後面的字符必須是字母。

OR

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

在正則表達式添加$如果只有一個接着一個字符串Hello信。 $斷言我們在最後。

> 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)' – 2014-11-08 05:34:04

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 
相關問題