2013-03-12 11 views
8

का उपयोग कर ऊंट केस स्ट्रिंग में स्थान डालकर मैं add a space between two words से अपना प्रश्न चला रहा हूं।नियमित अभिव्यक्ति

आवश्यकता: एक ऊंट केस स्ट्रिंग को विभाजित करें और पूंजी पत्र से पहले रिक्त स्थान डालें जो कि एक छोटे से केस पत्र के बाद होता है या कुछ भी नहीं हो सकता है। अंतरिक्ष पूंजी अक्षरों के बीच नहीं होना चाहिए।

जैसे:

"LightPurple".replace(/([a-z])([A-Z])/, '$1 $2') 

आप अधिक से अधिक 2 शब्द है, तो आप की आवश्यकता होगी: CSVFilesAreCoolButTXT एक स्ट्रिंग मैं इसे इस तरह से CSV Files Are Cool But TXT

मैं एक नियमित एक्सप्रेस इस तरह से चलाई उपज के लिए चाहते हैं उन सभी से मेल खाने के लिए, जी ध्वज का उपयोग करने के लिए।

"LightPurpleCar".replace(/([a-z])([A-Z])/g, '$1 $2') 

तो आपको इसके इस regexp का उपयोग करने की आवश्यकता हो सकती CSVFile जैसे शब्दों को विभाजित करने की कोशिश कर रहा है, तो कर रहे हैं:

"CSVFilesAreCool".replace(/([a-zA-Z])([A-Z])([a-z])/g, '$1 $2$3') 

लेकिन फिर भी यह रास्ता मैं अपने आवश्यकताओं डाल दिया है की सेवा नहीं है।

+0

आपका अंतिम रेगेक्स केवल अपरकेस अक्षरों के साथ समाप्त होने पर विफल हो रहा है। उदाहरण के लिए। '... ButTXT' –

उत्तर

13
var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g; 

"CSVFilesAreCoolButTXT".replace(rex, '$1$4 $2$3$5'); 
// "CSV Files Are Cool But TXT" 

और यह भी

"CSVFilesAreCoolButTXTRules".replace(rex, '$1$4 $2$3$5');  
// "CSV Files Are Cool But TXT Rules" 

विषय स्ट्रिंग कि regex नमूने का मिलान का पाठ प्रतिस्थापन स्ट्रिंग '$1$4 $2$3$5', जहां $1, $2 आदि सबस्ट्रिंग से मिलान का उल्लेख से बदल दिया जाएगा पैटर्न के कैप्चर समूह ()

$1 सबस्ट्रिंग पहले ([A-Z]) उप पैटर्न के अनुरूप करने के लिए संदर्भित करता है, और $3 सबस्ट्रिंग पहले ([a-z]) उप पैटर्न के अनुरूप करने के लिए संदर्भित करता है आदि

प्रत्यावर्तन चरित्र |, एक मैच बनाने के लिए की वजह से

रेगेक्स को ([A-Z])([A-Z])([a-z]) उप-पैटर्न या ([a-z])([A-Z]) उप-पैटर्न से मेल खाना पड़ेगा, इसलिए यदि कोई मैच बनाया गया है तो कई कैप्चर समूह बेजोड़ रहेंगे। इन कैप्चर समूहों को प्रतिस्थापन स्ट्रिंग में संदर्भित किया जा सकता है लेकिन उनके पर इसका कोई प्रभाव नहीं पड़ता है - प्रभावी रूप से, वे एक खाली स्ट्रिंग का संदर्भ लेंगे।

प्रतिस्थापन स्ट्रिंग में स्थान सुनिश्चित करता है कि मैच हर बार विषय स्ट्रिंग में एक स्थान डाला जाता है (पीछे g ध्वज का मतलब है कि नियमित अभिव्यक्ति इंजन एक से अधिक मैच की तलाश करेगा)।

+2

मुझे आपके द्वारा परिभाषित रेगेक्स के स्पष्टीकरण को देखना अच्छा लगेगा, इसलिए पाठकों और नौसिखिए को पता चलेगा कि उन सभी 1-2-3-4-5 के साथ क्या हो रहा है। – KMX

+0

ठीक है जो मैंने अपनी प्रारंभिक आवश्यकता में जो कहा है उसके लिए सबसे अच्छा काम करता है। अब मैं कुछ और स्ट्री आगे बढ़ा रहा हूँ। तो इस धागे के नीचे इस पर धमाके देता है। अद्यतन पढ़ें। – KMX

+1

@ केएमएक्स। मैं अनुशंसा करता हूं कि आप किसी अन्य व्यक्ति को किसी स्वीकृत उत्तर के लिए कुछ क्रेडिट प्राप्त करने का मौका देने के लिए एक नया प्रश्न पूछें। – MikeM

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