加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 与grep和正则表达式匹配的部分字符串

发布时间:2020-12-14 06:07:39 所属栏目:百科 来源:网络整理
导读:我有一个三个字符串的向量,我正在尝试编写一个命令,它将找到向量的哪些成员具有特定字母作为第二个字符. 举个例子,假设我有这个三字母蜇的向量… example = c("AWA","WOO","AZW","WWP") 我可以使用grepl和glob2rx来查找W作为第一个或最后一个字符的字符串. g
我有一个三个字符串的向量,我正在尝试编写一个命令,它将找到向量的哪些成员具有特定字母作为第二个字符.

举个例子,假设我有这个三字母蜇的向量…

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读