gsub

2013-02-06 22 views
6

का उपयोग कर एकाधिक रिक्त स्थान और पिछली जगहों को हटाकर मैं केवल 1 gsub का उपयोग करके एकाधिक रिक्त स्थान और पिछली जगहों को कैसे हटा सकता हूं? मैंने पहले ही यह फ़ंक्शन trim <- function(x) gsub(' {2,}',' ',gsub('^ *| *$','',x)) बनाया है, लेकिन मैं इसे केवल 1 जीएसबी के साथ फिर से लिखने की कोशिश कर रहा हूं।gsub

असल में, मैं दुबला चाहता हूं कि जीएसबी के साथ/उसके पहले क्या है उसके आधार पर कुछ मिलान करना है।

^ *|(?<=) | *$ 

: इस उदाहरण में मैं सभी रिक्त स्थान है कि एक ही जगह से preceeded से मेल खाते हैं, और उन्हें यदि वर्तमान अंतरिक्ष एक अंतरिक्ष से पहले किया जाता है देखने के लिए '

+1

क्या आप एक ही स्थान से पहले की सभी रिक्त स्थान से मेल खाने के बारे में अपने आखिरी बयान को दोहरा सकते हैं और स्पष्ट कर सकते हैं? क्या आपका मतलब है कि आप रिक्त स्थान की किसी भी संख्या को एक ही स्थान पर कम करना चाहते हैं? – Dinre

+0

@ डिनर, हाँ, मैं सभी एकाधिक रिक्त स्थान को एक ही में कम करना चाहता हूं। जैसा कि आप देख सकते हैं, पहला gsub() ('बाहरी' एक) सटीक रूप से ऐसा करता है, लेकिन मैं केवल 1 gsub() का उपयोग करना चाहता हूं, और इसलिए मैंने किसी अन्य स्थान से पहले सभी रिक्त स्थान को हटाने का तरीका पूछा (उपयोग करने के लिए पिछली जगहों को हटाने के लिए उपयोग किया गया एक ही gsub()) – Rcoster

उत्तर

13

एक सकारात्मक lookbehind उपयोग द्वारा' प्रतिस्थापित करने की आवश्यकता इसे यहां क्रिया में देखें: http://regex101.com/r/bJ1mU0

+1

+1! आर में नोट हमें ऐसे regex के साथ 'perl = T' की आवश्यकता है। – agstudy

+0

धन्यवाद यूसुफ और अजीब! – Rcoster

+8

पूर्णता के लिए (मेरा उत्तर संपादन अस्वीकार कर दिया गया था), यहां पूर्ण कार्य है: 'trim <- function (x) वापसी (gsub ("^* | (? <=) | * $ "," ", X, perl = टी)) ' –