使用str_detect筛选括号前后含其他内容的条目问题
我来帮你搞定这个问题!你想要筛选出那些不只是单纯{单词}格式的条目,也就是括号前后还带有其他内容的,对吧?咱们一步步来实现:
首先先构造你的示例数据,方便测试:
library(dplyr) library(stringr) # 模拟你的原始数据 df <- tibble( items = c("{apple}", "{orange}>s>", "{pine--apple}", "{kiwi}", "{strawberry}>s>") )
接下来关键是写对正则表达式——你之前在regexr里能用但R里不行,大概率是没加字符串首尾锚点,或者没正确转义特殊字符。咱们要匹配的是「整个字符串就是{单词}」的格式,然后取反筛选:
# 筛选出不符合"仅{单词}"格式的条目 target_items <- df %>% filter(!str_detect(items, "^\\{[A-Za-z-]+\\}$")) # 查看结果 target_items
正则表达式解释:
^和$:锚定字符串的开头和结尾,确保我们匹配的是整个字符串,而不是字符串里的某一段\\{和\\}:转义左右括号,因为括号在正则里是特殊语法,必须转义才能匹配字面量[A-Za-z-]+:匹配一个或多个字母(大小写)或连字符,覆盖你例子里pine--apple这种带连字符的单词情况
运行这段代码后,就能得到你需要的两个条目:{orange}>s> 和 {strawberry}>s>啦。
内容的提问来源于stack exchange,提问作者rayne
相关产品推荐
相关产品推荐

