实际上我试图grep不同的文件名,但是因为括号而不能使用grep,而它适用于匹配
match("248465_abc_S(R).doc",Role[,"Name.of.file"])
[1] 9
grep("248465_abc_S(R).doc",Role[,"Name.of.file"])
integer(0)
因为我有不同的格式,如doc,docx所以我不能使用匹配,我使用 fixed = T ,它使用单个名称但不使用 OR
grep("248465_abc_S(R)",Role[,"Name.of.file"],fixed = TRUE)
[1] 9
grep(paste(names,collapse="|"),Role[,"Name.of.files"]) #some names still missing because of brackets
[1] 6 11 14 17 26 27 28
grep(paste(names,collapse="|"),Role[,"Name.of.files"],fixed = TRUE)
integer(0)
修改
paste(name,collapse="|")
[1] "115457_dfm(R)|248465_sdj_S(R)[1]|248471_sdjb(R)[1]|28837_FS
grep(paste(gsub("]","\\]",gsub("[","\\[",gsub(".","\\.",gsub(")","\\)",gsub("(","\\(",name,fixed=T),fixed=T),fixed=T),fixed=T),fixed=T),collapse="|"),Role[,"Name.of.files"])
[1] 6 9 10 11 12 14 17 18 20 21 22 26 27 28
而不是识别要转义的每个角色,而不是更好的方法,谢谢。
答案 0 :(得分:1)
match
获取实际值以进行搜索。
grep
采用regex
模式进行搜索。 (
和)
在正则表达式中具有特殊含义。
要在模式中使用括号,您需要使用\\
来转义它们。同样适用于.
。
尝试下面的内容,看看这是不是你想要的。
grep("248465_abc_S\\(R\\)\\.doc",Role[,"Name.of.file"])