string = c("Hello-", "HelloA", "Helloa")
grep("Hello$[A-z]", string)
我希望找到字符串的索引,其中下一个字符是" Hello"是一封信(不区分大小写)。上面的代码不起作用,但我希望grep()返回索引2和3,因为这些单词在&#34之后有一个字母; Hello"
答案 0 :(得分:6)
使用正向前瞻
> string = c("Hello-", "HelloA", "Helloa")
> grep('Hello(?=[A-Za-z])', string, perl=T)
[1] 2 3
(?=[A-Za-z])
这个正向前瞻断言字符串Hello
后面的字符必须是字母。
或强>
> 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
答案 1 :(得分:2)
" $"是字符串结尾的符号,因此您需要删除。
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