2011-12-23 15 views
12

मैं preg_replace() और एक रेगेक्स जैसे PHP विधि का उपयोग करके पूंजी अक्षरों पर एक स्ट्रिंग में एक स्थान जोड़ना चाहता हूं, लेकिन मैं केवल पहले पूंजी अक्षर पर एक स्थान जोड़ना चाहता हूं जब वे निरंतर हों। मैं रेगेक्स को यह भी जानना चाहूंगा कि राजधानियों की एक सतत स्ट्रिंग में आखिरी पूंजी पहले एक जगह लगाने के लिए अगली पूंजी होनी चाहिए।मैं कैपिटल अक्षरों में स्ट्रिंग में एक स्पेस कैसे जोड़ सकता हूं, लेकिन PHP और रेगेक्स का उपयोग करके निरंतर राजधानियों को एक साथ रख सकता हूं?

 
TodayILiveInTheUSAWithSimon 
USAToday 
IAmSOOOBored 

बन:

 
Today I Live In The USA With Simon 
USA Today 
I Am SOOO Bored 

इस किया जा सकता है, और कैसे

ये स्ट्रिंग उदाहरण हैं?

यह प्रश्न (Regular expression, split string by capital letter but ignore TLA), यह .NET के साथ पूरा करने के लिए प्रतीत होता है।

$string = 'TodayILiveInTheUSAWithSimon'; 
$regex = '/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/'; 
$string = preg_replace($regex, ' $1', $string); 

इन regex के काम के दोनों: @ Regexident के समाधान से

/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/ 
/((?<=[a-z])(?=[A-Z])|(?=[A-Z][a-z]))/ 

पहले एक है

श्रमजीवी समाधान

यहाँ पूरा कोड है कि मैं का उपयोग करें नीचे, और दूसरे की तुलना में बहुत तेज है।

उत्तर

10

खोजें:

(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]])) 

बदलें:

$1 

टिप्पणी से पहले $1

संपादित अंतरिक्ष: ठीक।

+0

इस रेगेक्स के साथ इसे पूरा करने के लिए मुझे किस PHP तरीकों का उपयोग करना चाहिए? –

+0

@ टी। ब्रायन जोन्स: वह [preg_replace] होगा (http://php.net/manual/en/function.preg-replace.php)। – Regexident

+0

मुझे निम्न त्रुटि मिल रही है: 'preg_replace(): संकलन विफल: क्लास नामित POSIX केवल ऑफसेट 4' पर एक वर्ग के भीतर समर्थित है जब मैं इसे निष्पादित करता हूं:' echo preg_replace ('((?

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

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