显示没有给定字符 (#) 的所有向量

Jak*_*ski 5 regex r

我知道论坛上有类似的话题,但是我的问题没有答案,我尝试了不同的方法(R regex - 提取以@符号开头的单词)。我需要写出所有前面没有符号的单词。

下面的代码删除了所有包含 #sign 和此操作结果的单词。

tweeter <- c("#tweeter tweet", "h#is", "tweet #tweeter2", "twet")
str_extract_all(tweeter, "(?<=\\B\\#)[^\\s]+")
Run Code Online (Sandbox Code Playgroud)

它的结果:

[[1]]
[1] "tweeter"

[[2]]
character(0)

[[3]]
[1] "tweeter2"

[[4]]
character(0)
Run Code Online (Sandbox Code Playgroud)

现在他尝试显示所有开头没有 # 的单词的代码。

regmatches(tweeter, gregexpr("\\B#\\S+", tweeter), invert = T) 
Run Code Online (Sandbox Code Playgroud)

我想显示不以#just 开头的单词列表,不知道如何正确书写。

dee*_*fan 4

这将为您提供不以以下字符开头的单词#

library(stringr)

tweeter[!str_detect(tweeter, "^#")]
# "h#is"            "tweet #tweeter2" "twet"  
Run Code Online (Sandbox Code Playgroud)

解释

str_detect(tweeter, "^#")pattern在本例中返回基于 和 的逻辑向量^#^匹配开头并#指定开头要匹配的字符。

最后,要返回条件为的值,TRUE我们使用tweeter[].

!通过使用以下参数,可以在不使用which 否定逻辑值的negate情况下实现相同的效果str_detect

tweeter[str_detect(tweeter, "^#", negate = TRUE)]
# "h#is"            "tweet #tweeter2" "twet" 
Run Code Online (Sandbox Code Playgroud)