目标是解析正则表达式并替换匹配的模式。
考虑这个例子:
if NSFileManager.defaultManager().fileExistsAtPath(path) {
NSLog("The file exists!")
} else {
NSLog("Better luck next time...")
}
我必须找到所有出现的data <- c("cat 6kg","cat g250", "cat dog","cat 10 kg")
和一个数字cat
。要做到这一点:
[0-9]
下一步是用字符串found <- data[grepl("(^cat.[a-z][0-9])|(^cat.[0-9])",data)]
found
[1] "cat 6kg" "cat g250" "cat 10 kg"
替换found
的每个元素。我根据堆栈问题20219311尝试了来自包(gsubfn)的 gsub , sub 和 gsubfn():
cat
这不是预期的结果:
gsubfn("((^cat.[a-z][0-9])|(^cat.[0-9]))", "cat",data)
[1] "catkg" "cat50" "cat dog" "cat0 kg"
我想我错过了一点。我很感激我能得到任何帮助。感谢。
答案 0 :(得分:3)
简单,,,,只需将字符串cat
分配给匹配元素即可。这将使用cat
> data <- c("cat 6kg","cat g250", "cat dog","cat 10 kg")
> data[grepl("(^cat.[a-z][0-9])|(^cat.[0-9])",data)] <- "cat"
> data
[1] "cat" "cat" "cat dog" "cat"
或
> data <- c("cat 6kg","cat g250", "cat dog","cat 10 kg")
> data[grepl("^cat.[a-z]?[0-9]",data)] <- "cat"
> data
[1] "cat" "cat" "cat dog" "cat"
答案 1 :(得分:1)
您也可以
sub('\\s*dog(*SKIP)(*F)|(?<=cat).*', '', data, perl=TRUE)
#[1] "cat" "cat" "cat dog" "cat"
或者
sub('(cat)\\s*([0-9]|[a-z][0-9]).*$', '\\1', data)
#[1] "cat" "cat" "cat dog" "cat"
答案 2 :(得分:0)
试试这个:
gsub('(\\w?[0-9].*)','',data)
#[1] "cat " "cat " "cat dog" "cat "