r - 使用 grep 和正则表达式进行部分字符串匹配

标签 r regex string

我有一个由三个字符串组成的向量,我正在尝试编写一个命令来查找向量的哪些成员将特定字母作为第二个字符。

举个例子,假设我有这个由 3 个字母组成的向量......

example = c("AWA","WOO","AZW","WWP")

我可以使用 grepl 和 glob2rx 来查找以 W 作为第一个或最后一个字符的字符串。
> grepl(glob2rx("W*"),example)
[1] FALSE  TRUE FALSE  TRUE

> grepl(glob2rx("*W"),example)
[1] FALSE FALSE  TRUE FALSE

但是,当我尝试将它与 glob2rx(*W*) 一起使用时,我没有得到正确的结果。
> grepl(glob2rx("*W*"),example)
[1] TRUE TRUE TRUE TRUE

我确信我对正则表达式的理解缺乏,但这似乎是一个非常简单的问题,我似乎无法找到解决方案。我真的很想得到一些帮助!

为了将来引用,我也很想知道是否可以将其扩展到我有更长字符串的情况。假设我有 5 个字符长的字符串,我可以以这种方式使用 grepl 来返回 W 是第三个字符的字符串吗?

最佳答案

我会认为这是正则表达式的方式:

>  grepl("^.W",example)
[1]  TRUE FALSE FALSE  TRUE

如果你想要一个预先指定的特定职位,那么:
>  grepl("^.{1}W",example)
[1]  TRUE FALSE FALSE  TRUE

这将允许编程计算:
pos= 2
n=pos-1
grepl(paste0("^.{",n,"}W"),example)
[1]  TRUE FALSE FALSE  TRUE

关于r - 使用 grep 和正则表达式进行部分字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20895383/

相关文章:

r - "natively"如何在 R 中存储六边形网格?

R - 随时间变化的观察图频率,值范围较小

r - 如何在R中的大数据框中按特定文本对行求和

Python 重新 "bogus escape error"

regex - SH CLI sed 从列表中删除除路径之外的所有字符

r - Plotly map 不在 R 中渲染

c++ - 将 vector<int> 转换为定界字符串

java - Android部分字符串关键字匹配

java - 删除字符串中数字后面的任何内容

Python从文件中的正则表达式子字符串匹配中删除空格