मुझे ऊंट केस कैरेक्टर और -
के साथ कुछ कैमेलकेस वर्णों को प्रतिस्थापित करने की आवश्यकता है। मैं दो समस्याएं हैंरेगेक्स चरित्र को प्रतिबिंबित करने के लिए चरित्र और हाइफ़न
$data = preg_replace("/[^ \w]+/", '', $data);
$pcre = '\A\s*(.*?)\s*\x2f?(\pN+\s*[a-zA-Z]?(?:\s*[-\x2f\pP]\s*\pN+\s*[a-zA-Z]?)*)\s*\z/ux';
preg_match($pcre, $data, $h);
अब,:
मैं क्या मिल गया है उन जैसे एक स्ट्रिंग है:
Albert-Weisgerber-Allee 35
Bruninieku iela 50-10
उन तार सड़क से संख्या अलग करने के इस regex के माध्यम से जा रहे हैं।
मैं regex पर बहुत बुरा हूँ।
ऊपर से रेगेक्स सड़कों के नाम से हर
-
में कटौती करता है, और जर्मनी और यूरोप में उन नामों में से बहुत सारे नाम हैं।
वास्तव में यह काफी बस regex समायोजित करने के लिए किसी भी हाइफ़न कटौती नहीं करने के लिए आसान हो सकता है, लेकिन मुझे लगता है जानने के लिए कैसे regex काम करता है और इसलिए मैं एक regex कि बस में हर ऊंट मामले पत्र की जगह खोजने की कोशिश करने का फैसला किया चाहते हैं स्ट्रिंग
- & matched Camel Case letter
पहले अपरकेस अक्षर उपस्थिति को छोड़कर।
मैं एक regex कि मुझे स्थानों मैं बहुत की तरह एक हाइफन पेस्ट करने की आवश्यकता से पता चलता खोजने के लिए प्रबंधित किया है:
.[A-Z]{1}/ug
https://regex101.com/r/qI2iA9/1
लेकिन मैं इस स्ट्रिंग पृथ्वी पर कैसे बदलूं:
AlbertWeisgerberAllee
है कि यह हो जाता है
Albert-Weisgerber-Allee
तो, आपको बस इतना करना है कि अपरकेस अक्षरों से पहले एक हाइफ़न डालें, है ना? – Anonymous
हां, केवल एक अन्य रेगेक्स के साथ एक दोषपूर्ण रेगेक्स के आउटपुट को ठीक करने के बजाय पहले एक @ अनामित – baao
को छोड़कर, मैं आपको पहले रेगेक्स को ठीक करने के लिए अनुशंसा करता हूं (यह संभव है) संख्याओं से पहले '-' को प्रतिस्थापित न करें । बस पूरे regex खरोंच से फिर से लिखो। यदि आपने अभी तक ऐसा नहीं किया है, तो एक (लंबा) रेगेक्स ट्यूटोरियल का पालन करें, और खुद को रेगेक्स सीखने के लिए पूरे दिन या अधिक समय दें (इस समय के लिए अपनी समस्या को भूलना)। जब भी आपको रेगेक्स की आवश्यकता होती है तो यह आपके कोडिंग जीवन को बहुत कम निराशाजनक बना देगा। – hoijui