R中的正则表达式:从字符串中提取单词

时间:2019-08-26 15:14:22

标签: r regex

我有一个字符串,我想从中提取名称,但似乎无法正确处理所有事情:

str = "JaMes + Heather + Lynn + log(Barry) + Sister2"
str_list = strsplit(x=str, split="\\+")

我不希望“ log(Barry)”作为输出,而只是“ Barry”。

3 个答案:

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