r - grep OR在数字序列之后

时间:2016-12-14 11:46:52

标签: r regex grep

所以,我有一个向量v,其中包含一系列数字,后跟dayweek的指示。我想选择只有day的序列。

v = c('abc_1day', 'abc_2day', 'abc_3day', 'abc_1week', 'abc_2dweek')

我认为or条件可以在这里工作

v[grep('abc_|day', v)] 

为什么不是?

3 个答案:

答案 0 :(得分:2)

使用grepl

v[grepl("day", v)]

这假定day仅作为令牌就足以匹配您想要的条目。如果没有,您可以修改正则表达式。要匹配day之前的数字,您可以使用:

v[grepl("\\d+day", v)]

答案 1 :(得分:1)

我们可以使用

grep('^abc_[0-9]+day$', v, value = TRUE)
#[1] "abc_1day" "abc_2day" "abc_3day"

注意:这考虑了OP的数字标准,后面是字符串末尾的日期,并以'abc'开头。

答案 2 :(得分:1)

OR条件匹配## Client connection ec2 = boto3.client( 'ec2', aws_access_key_id=aws_access_key, aws_secret_access_key=aws_secret_key, region_name = ec2_region_name ) def lambda_handler(event, context): count = 0 for sg in ec2.describe_security_groups(): count = count + 1 print(count) abc_

一种选择是使用\K,该lookarounds符合仅day匹配的标准day和数字:

abc_

这与akrun的v[grep('abc_[0-9]+\\Kday', v, perl = TRUE)] [1] "abc_1day" "abc_2day" "abc_3day" 不同,后者匹配整个字符串。值得注意的是,grep('^abc_[0-9]+day$', v, value = TRUE)优于documentation of the AfterInstall parameter的一个有用优势是\K可以是可变长度。