/ / डबल टोकन से बचने वाले स्ट्रिंग को विभाजित करने के लिए नियमित अभिव्यक्ति - जावास्क्रिप्ट, एरेज़, रेगेक्स, स्ट्रिंग, स्प्लिट

डबल टोकन से बचने वाली स्ट्रिंग को विभाजित करने के लिए नियमित अभिव्यक्ति - जावास्क्रिप्ट, सरणी, रेगेक्स, स्ट्रिंग, विभाजन

जावास्क्रिप्ट का उपयोग करके एक सरणी में एक स्ट्रिंग मान को विभाजित करने के लिए मुझे सीमांकक का उपयोग करके विभाजित करने की आवश्यकता है। बार-बार सीमांकक सरणी के भीतर एक उप-मूल्य का संकेत देता है, इसलिए उदाहरण के लिए

एबीसी + +;! डीईएफ़ + + +;! 123 + +;! xyz

abc, [def, 123], xyz में विभाजित होना चाहिए

मेरी निकटतम अभिव्यक्ति है ((?: +! (?! +!)!) +; - $) लेकिन इसके बारे में सोचकर जो मैं पहली बार शुरू कर सकता हूं, जैसा कि मैंने किया था, तब से बहुत सारे बदलाव हुए।

वहाँ शायद एक स्पष्ट रूप से स्पष्ट जवाब है, लेकिन क्या एक अनंत काल के बाद मुझे लगता है मैं अब स्टम्प्ड हूँ। मैंने एक नज़र डाला। बच गए पात्रों के साथ स्ट्रिंग पार्स करने के लिए regex, और इसी तरह के लेख जो पास थे, हालांकि वही समस्या नहीं थी, लेकिन मूल रूप से विचारों के साथ बंद हो गया।

कहीं न कहीं किसी को मेरे द्वारा किए गए नियमित अभिव्यक्ति से कहीं बेहतर पता चल जाएगा, और आशा है कि उनके पास एक उत्तर होगा

उत्तर:

उत्तर № 1 के लिए 1

मुझे यह प्रयोग करके काम करने के लिए मिला .split() इसके साथ बुनियादी पैटर्न:

b+!+;b

और तब:

b+!+!+;b

इत्यादि इत्यादि। आपको इसे एक पुनरावर्ती फ़ंक्शन में बदलना होगा, लेकिन मैंने एक मूल बनाया JSFiddle आरंभ करने के लिए। पहले हम अपनी पहली अभिव्यक्ति का उपयोग करके स्ट्रिंग को विभाजित करते हैं। फिर हम जोड़कर अपनी नई अभिव्यक्ति बनाते हैं !+ (यह आसानी से गतिशील रूप से किया जा सकता है)। अब हम अपने प्रारंभिक सरणी के माध्यम से लूप कर सकते हैं, देखें कि क्या स्ट्रिंग हमारी नई अभिव्यक्ति से मेल खाती है और यदि यह इसे फिर से विभाजित करता है।

var string = "abc+!+;def+!+!+;123+!+;xyz",
data = string.split(/b+!+;b/);

var regex = /b+!+!+;b/
for(var i = 0; i < data.length; i++) {
var string = data[i];

if(string.match(regex)) {
data[i] = string.split(regex);
}
}

console.log(data);
// ["abc", ["def", "123"], "xyz"]

मैं इसे ओपी तक एक पुनरावर्ती कार्य करने का कार्य छोड़ रहा हूं। यदि आप कुछ दिशा चाहते हैं, तो मैं कुछ और जानकारी प्रदान करने का प्रयास कर सकता हूं।