R:用于指定字符串结尾的正则表达式char是一个字母

时间:2014-11-08 05:25:04

标签: r grep

    string = c("Hello-", "HelloA", "Helloa")
    grep("Hello$[A-z]", string)

我希望找到字符串的索引,其中下一个字符是" Hello"是一封信(不区分大小写)。上面的代码不起作用,但我希望grep()返回索引2和3,因为这些单词在&#34之后有一个字母; Hello"

2 个答案:

答案 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