R - 删除字符向量中以大写字母开头的字符串

aur*_*809 5 regex r extract uppercase

我有一个 df:

df <- c("hello goodbye Delete Me", "Another Sentence good program", "hello world The End")

我要这个:

c("hello goodbye", "good program", "hello world")

我试过了:

df <- grep("^[A-Z]", df, invert = TRUE, value = TRUE)

但这会删除以大写字母开头的整个字符:

c("hello goodbye Delete Me", "hello world The End")

我该怎么做呢?

Ron*_*hah 5

您可以使用 -

trimws(gsub('[A-Z]\\w+', '', df))
#[1] "hello goodbye" "good program"  "hello world" 
Run Code Online (Sandbox Code Playgroud)


Tim*_*sen 3

您可以使用以下正则表达式模式,然后仅替换为一个空格:

\s*[A-Z]\w+\s*
Run Code Online (Sandbox Code Playgroud)

这将捕获所有以大写字母开头的单词,以及可能出现在两侧的任何空格。外部调用trimws()是为了删除可能保留在开头或结尾的任何空格,作为替换逻辑的剩余部分。

x <- c("nice to meet You however", "cat Ran away", "Cat", "Dog")
trimws(gsub('\\s*[A-Z]\\w+\\s*', ' ', x))

[1] "nice to meet however" "cat away"             ""                    
[4] ""
Run Code Online (Sandbox Code Playgroud)