2013-02-06 86 views
6

如何仅使用1个gsub删除多个空格和尾部空格?我已经做了这个功能trim <- function(x) gsub(' {2,}',' ',gsub('^ *| *$','',x)),但我试图用1个gsub重写它。使用gsub删除多个空格和尾部空格

其实,我想要如何匹配基于gsub之后/之前的东西。在这个例子中,我需要匹配由一个空格preceeded所有空间,并通过'

+1

您能否重新阐释并澄清您最后一次声明是否匹配所有空格之前的单个空格?你的意思是你想减少任何多个空间到一个空间吗? – Dinre

+0

@Dinre,是的,我想将所有多个空间缩小到一个。正如你所看到的,第一个gsub()('外部')确实做到了这一点,但我只需要使用1个gsub(),这就是为什么我要求一种方法来删除所有空间的前一个空格(要使用相同的gsub()用于删除尾部空格) – Rcoster

回答

13

使用正回顾后替换它们,看看目前的空间是前面有一个空格:

^ *|(?<=) | *$ 

在此处查看:http://regex101.com/r/bJ1mU0

+1

+1!注意在R中,我们需要''perl = T'这样的正则表达式。 – agstudy

+0

谢谢Joseph和agstudy! – Rcoster

+8

为了完整性(我的回答编辑被拒绝),以下是全部函数: 'trim < - function(x)return(gsub(“^ * |(?<=)| * $”,“”,x,perl = T))' –