我需要知道是否存在解决方案。
我们说我们有一个包含如下内容的列表:
id Item
1 "CRANBERRY 10PKTS CARTON, BLUEBERRY 20PKTS CARTON"
2 "CRANBERRY 10PKTS CARTON,BLUEBERRY 20PKTS CARTON"
3 "CRANBERRY 10PKTS CARTON"
4 "CRANBERRY 30PKTS CARTON"
我想要的只是匹配" CRANBERRY"及其相关名称。这里的关键是当像id1这样的东西存在时,grepl应该返回一个假,因为它不仅包含蔓越莓,还有蓝莓。
grepl是否有办法为id1和id2返回false,但对于id3和id4是否为true?优选地,单个grepl句子是问题所需的全部内容。
提前致谢。
答案 0 :(得分:1)
根据这个例子,模式似乎是“CRANBERRY' BLUEBERRY'在由,
分隔的每组单词中出现一次等。如果是这种情况,我们可以匹配' CRANBERRY'在字符串开头的句子中(^
)后跟不是,
([^,]+
)的字符,直到字符串结尾($
)
grepl("^.*\\bCRANBERRY[^,]+$", df1$Item)
#[1] FALSE FALSE TRUE TRUE