2014-11-08 30 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 
相关问题