2014-11-12 7 views
6

मान लीजिए मैं एक स्ट्रिंगजोड़ें आर में एक स्ट्रिंग में दो अक्षरों के बीच अंतरिक्ष

s = "PleaseAddSpacesBetweenTheseWords" 

मैं कैसे आर में gsub प्रयोग करते हैं शब्दों के बीच स्पेस जोड़ने की तरह तो मैं

"Please Add Spaces Between These Words" 

मिलता है कि मुझे

gsub("[a-z][A-Z]", ???, s) 

कुछ ऐसा करना चाहिए ??? इसके अलावा, मुझे आर भ्रमित करने के लिए नियमित अभिव्यक्ति दस्तावेज मिलता है ताकि आर में नियमित अभिव्यक्तियों पर एक संदर्भ या लेखन की सराहना की जा सके।

उत्तर

20

आपको केवल मैचों को कैप्चर करने की आवश्यकता है और कैप्चर किए गए मैचों के संदर्भ में \1 वाक्यविन्यास का उपयोग करें। उदाहरण के लिए

s = "PleaseAddSpacesBetweenTheseWords" 
gsub("([a-z])([A-Z])", "\\1 \\2", s) 
# [1] "Please Add Spaces Between These Words" 

बेशक, यह केवल प्रत्येक निचले मामले/ऊपरी-केस अक्षर जोड़ी के बीच एक जगह रखता है। यह नहीं जानता कि असली "शब्द" क्या है।

+0

धन्यवाद। क्या \\ 1 मैच में पहला अक्षर, \\ 2 दूसरा, आदि का संदर्भ देता है? और ब्रैकेट आवश्यक क्यों हैं? – Ben

+1

\\ 1 उन सामानों को संदर्भित करता है जो ब्रांड्स के पहले सेट के अंदर से मेल खाते हैं, और इसी प्रकार \\ 2 कोष्ठक के दूसरे सेट को संदर्भित किया जाता है। इस मामले में, दोनों माता-पिता नियमित अभिव्यक्तियों को घेरते हैं जो एक ही चरित्र से मेल खाते हैं। '[ए-जेड] 'का मतलब किसी भी चरित्र से एक से ज़ेड (लोअरकेस) से मेल खाता है। – blakeoft

+0

@ रेनक्स चीटशीट "के लिए Google के आसपास Google। इससे आपको बहुत उपयोगी जानकारी मिल जाएगी। –

संबंधित मुद्दे