मुझे काम करने के लिए Aix का समाधान नहीं मिल सका (और यह RegExr पर भी काम नहीं करता है), इसलिए मैं अपने साथ आया हूं कि मैंने परीक्षण किया है और ऐसा लगता है कि आप क्या देख रहे हैं:
((^[a-z]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($))))
और यहाँ इसका उपयोग करने का एक उदाहरण है:
; Regex Breakdown: This will match against each word in Camel and Pascal case strings, while properly handling acrynoms.
; (^[a-z]+) Match against any lower-case letters at the start of the string.
; ([A-Z]{1}[a-z]+) Match against Title case words (one upper case followed by lower case letters).
; ([A-Z]+(?=([A-Z][a-z])|($))) Match against multiple consecutive upper-case letters, leaving the last upper case letter out the match if it is followed by lower case letters, and including it if it's followed by the end of the string.
newString := RegExReplace(oldCamelOrPascalString, "((^[a-z]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($))))", "$1 ")
newString := Trim(newString)
यहां मैं प्रत्येक शब्द को एक स्थान के साथ अलग कर रहा हूं, इसलिए यहां कुछ उदाहरण दिए गए हैं कि स्ट्रिंग कैसे रूपांतरित होती है:
- ThisIsATitleCASEString => यह शीर्षक शीर्षक स्ट्रिंग है
- andThisOneIsCamelCASE => और यह एक ऊंट मामला है
ऊपर यह समाधान करता है कि मूल पोस्ट क्या मांगता है, लेकिन मुझे ऊंट और पास्कल स्ट्रिंग्स को खोजने के लिए एक rexx की भी आवश्यकता थी जिसमें संख्याएं शामिल थीं, इसलिए मैं भी संख्याओं को शामिल करने के लिए इस भिन्नता के साथ आया था:
((^[a-z]+)|([0-9]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($)|([0-9]))))
और इसका उपयोग करने का एक उदाहरण:
; Regex Breakdown: This will match against each word in Camel and Pascal case strings, while properly handling acrynoms and including numbers.
; (^[a-z]+) Match against any lower-case letters at the start of the command.
; ([0-9]+) Match against one or more consecutive numbers (anywhere in the string, including at the start).
; ([A-Z]{1}[a-z]+) Match against Title case words (one upper case followed by lower case letters).
; ([A-Z]+(?=([A-Z][a-z])|($)|([0-9]))) Match against multiple consecutive upper-case letters, leaving the last upper case letter out the match if it is followed by lower case letters, and including it if it's followed by the end of the string or a number.
newString := RegExReplace(oldCamelOrPascalString, "((^[a-z]+)|([0-9]+)|([A-Z]{1}[a-z]+)|([A-Z]+(?=([A-Z][a-z])|($)|([0-9]))))", "$1 ")
newString := Trim(newString)
और यहां कुछ उदाहरण दिए गए हैं कि कैसे संख्याओं के साथ एक स्ट्रिंग इस रेगेक्स में बदल जाती है:
- myVariable123 => मेरा परिवर्तनीय 123
- my2Variables => मेरे 2 वेरिएबल्स
- The3rdVariableIsHere => 3 rdVariable यहाँ है
- 12345NumsAtTheStartIncludedToo => 12345 Nums प्रारंभ में बहुत शामिल हैं
^
नकारात्मक लुकहैंड में कैपिटल अक्षरों के लिए एक और सशर्त मामले में सशर्त संशोधक की आवश्यकता होगी । यकीन के लिए परीक्षण नहीं किया गया है, लेकिन मुझे लगता है कि समस्या को ठीक करने के लिए आपका सबसे अच्छा शर्त होगा।