正则表达式 – 除去字符串中的第一个点以外的所有点
发布时间:2020-12-14 06:00:16 所属栏目:百科 来源:网络整理
导读:我想替换除了第一个连续点以外的所有点.这是我想要的一个例子: names.orig - c("test best","test worse ? do") names - make.names(names.orig) names[1] "test...best" "test...worse.........do" # But I want this instead: # [1] "test.best" "test.wo
我想替换除了第一个连续点以外的所有点.这是我想要的一个例子:
> names.orig <- c("test & best","test & worse &&&& ? do") > names <- make.names(names.orig) > names [1] "test...best" "test...worse.........do" > > # But I want this instead: > # [1] "test.best" "test.worse.do" > > # Desperatley tried: > gsub(".{2,}","",names) [1] "testbest" "testworsedo" > gsub("G((?!^).*?|[^.]*.*?).",names) Error in gsub("G((?!^).*?|[^.]*.*?).",names) : invalid regular expression 'G((?!^).*?|[^.]*.*?).',reason 'Invalid regexp' > # etc. > > # The only thing that works for me is this > unlist(lapply(strsplit(names,"."),function(x) paste(x[x != ""],collapse="."))) [1] "test.best" "test.worse.do" > > # But,really,what is the right regex in combination with what? 如何用正则表达式解决这个问题? 解决方法
将“”替换为“.”在你的第一个正则表达式:
R> nms <- make.names(c("test & best","test & worse &&&& ? do")) R> gsub(".{2,".",nms) [1] "test.best" "test.worse.do" 这也有效.基本上,您用一个点替换所有点和连续点. R> gsub(".+",nms) [1] "test.best" "test.worse.do" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |