2013-02-06 82 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))' –