我有一个字符串,我想从中提取名称,但似乎无法正确处理所有事情:
str = "JaMes + Heather + Lynn + log(Barry) + Sister2"
str_list = strsplit(x=str, split="\\+")
我不希望“ log(Barry)”作为输出,而只是“ Barry”。
答案 0 :(得分:2)
一个选项是删除AutoScalingGroupName
和带有 MyAutoScalingGroup:
Type: 'AWS::AutoScaling::AutoScalingGroup'
Properties:
AutoScalingGroupName: !Sub 'my-auto-scaling-group-${AWS::Random}'
的括号
log
或带有gsub/sub
gsub('log\\(|\\)', '', str)
#[1] "JaMes + Heather + Lynn + Barry + Sister2"
或者使用sub
,我们只能提取单词
sub('log\\(([^)]+)\\)', '\\1', str)
#[1] "JaMes + Heather + Lynn + Barry + Sister2"
如果我们需要惯用语
regexpr/regmatches
或使用正则表达式环视
setdiff(regmatches(str, gregexpr('\\w+', str))[[1]], "log")
#[1] "JaMes" "Heather" "Lynn" "Barry" "Sister2"
答案 1 :(得分:2)
您可以使用
library(stringi)
stri_extract_all_words(gsub("log", "", str))[[1]]
[1] "JaMes" "Heather" "Lynn" "Barry" "Sister2"
答案 2 :(得分:2)
您可以使用'function_name(object)'
之类的东西,然后使用'object'
将其转换为gsub
。之后,在' + '
上分割将提供所需的输出。
strsplit(gsub('\\w+\\((.*)\\)', '\\1', str), ' + ', fixed = T)[[1]]
# [1] "JaMes" "Heather" "Lynn" "Barry" "Sister2"