2017-11-30 28 views
7

से मेल खाने वाले प्रत्येक वर्ण को बदलें, मैं एक निश्चित पैटर्न से मेल खाने वाली स्ट्रिंग में प्रत्येक वर्ण को प्रतिस्थापित करना चाहता हूं। निम्न स्ट्रिंगपैटर्न रेगेक्स

mystring <- c("000450") 

मैं सभी तत्वों को गैर-शून्य वाले पहले तत्व तक मिलान करना चाहता हूं। मैं एक ही x साथ की तरह

gsub("^0[^1-9]*", "x", mystring) 
[1] "x450" 

कुछ इस अभिव्यक्ति सभी अग्रणी शून्य की जगह की कोशिश की। लेकिन इसके बजाय, मैं xxx के साथ सभी तीन प्रमुख शून्यों को प्रतिस्थापित करना चाहता हूं। पसंदीदा परिणाम

[1] "xxx450" 

क्या कोई मेरी मदद कर सकता है?

उत्तर

9

आप का उपयोग

mystring <- c("000450") 
gsub("\\G0", "x", mystring, perl=TRUE) 
## => [1] "xxx450" 

regex demo और एक R demo

\\G0 regex स्ट्रिंग के शुरू में 0 से मेल खाता देख सकते हैं, और किसी भी 0 है कि केवल एक सफल मैच के बाद दिखाई देता है।

विवरण

  • \G - एक लंगर से मेल खाता है ("दावा") स्ट्रिंग की या सही एक सफल मैच
  • 0 के बाद शुरू में स्थिति - एक 0 चार।
+0

ग्रेट, यह ठीक काम करता है! आपको 'perl = TRUE' क्यों सेट करना होगा? – RudiSophieson

+1

@RudiSophieson '\ G' एंकर [समर्थित नहीं है] (https://ideone.com/wCh7yJ) डिफ़ॉल्ट TRE regex falvor द्वारा। –

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