我正在尝试使用 R 来解析多个条目。我对想要返回的条目有两个要求。我想要所有包含单词 apple
的条目但不要包含单词 orange
.
例如:
我想取回条目 1 和 2。
我怎么能去使用 R 来做到这一点?
谢谢。
最佳答案
使用正则表达式,您可以执行以下操作。
x <- c('I like apples', 'I really like apples',
'I like apples and oranges', 'I like oranges and apples',
'I really like oranges and apples but oranges more')
x[grepl('^((?!.*orange).)*apple.*$', x, perl=TRUE)]
# [1] "I like apples" "I really like apples"
正则表达式向前看是否除了换行符和子字符串之外没有任何字符
orange
如果是这样,那么点 .
将匹配除换行符以外的任何字符,因为它被包装在一个组中,并重复( 0
或更多次)。接下来我们找apple
以及除换行符以外的任何字符( 0
或更多次)。最后,线的起点和终点 anchor 就位以确保输入被消耗。更新 :如果性能有问题,您可以使用以下方法。
x[grepl('^(?!.*orange).*$', x, perl=TRUE)]
关于regex - R中包含和排除某些字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23943668/