मुख्य सामग्री पर जाएं
मॉड्यूल 7 · पाठ 4 का 4पाठ्यक्रम में 28/32~10 min
मॉड्यूल पाठ (4/4)

रेगेक्स के साथ विभाजित करें

String.prototype.split(separator) न केवल एक निश्चित स्ट्रिंग को स्वीकार करता है बल्कि विभाजक के रूप में एक रेगेक्स भी। यह इसे टोकनाइज़ेशन के लिए एक शक्तिशाली उपकरण बनाता है संरचित पाठ.

JS
'uno, due,tre  quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]

रेगेक्स /[,\s]+/ "एक या अधिक अल्पविराम या रिक्त स्थान" से मेल खाता है: विभाजित किसी भी यौगिक सीमांकक पर विभाजन।

विशिष्ट मामले

  • अनुमेय सीएसवी: अल्पविराम के आसपास रिक्त स्थान को संभालने के लिए text.split(/\s*,\s*/)।
  • नाइव टोकनाइज़र: शब्द निकालने के लिए text.split(/\s+/)।
  • विभाजक रखें: यदि रेगेक्स में कैप्चरिंग समूह हैं, तो समूहों की सामग्री परिणाम सरणी में शामिल है।
JS
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]

() समूह के बिना अर्धविराम गायब हो जाएगा। (;) के साथ आप इसे रखें परिणाम में.

विभाजन संचालन में विभाजकों को संरक्षित करना

यदि आप विभाजित विभाजकों को कैप्चरिंग कोष्ठक के अंदर रखते हैं, तो String.prototype.split का आउटपुट विभाजकों को हटाने के बजाय, उन्हें अंतिम सरणी में तत्वों के रूप में शामिल करेगा।

इसे अजमाएं

व्यायाम#regex.m7.l4.e1
प्रयास: 0लोड हो रहा है...

प्रत्येक अनुमेय सीएसवी विभाजक खोजें: इसके चारों ओर वैकल्पिक रिक्त स्थान के साथ एक अल्पविराम। इस तरह आप सूची को टोकनाइज़ करने के लिए इसे विभाजित करके उपयोग कर सकते हैं।

संपादक लोड हो रहा है...
संकेत दिखाएँ

किसी भी वैकल्पिक स्थान को अवशोषित करने के लिए अल्पविराम से पहले और बाद में \\s* का उपयोग करें।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#regex.m7.l4.e2
प्रयास: 0लोड हो रहा है...

प्रत्येक 'रिक्त स्थान या अर्धविराम' विभाजक (एक या अधिक) खोजें। इस प्रकार विभाजन पाठ को शब्दों में बदल देगा।

संपादक लोड हो रहा है...
संकेत दिखाएँ

\\s और ; को मिलाएं एक वर्ग में [\\s;] + क्वांटिफायर के साथ।

3 प्रयासों के बाद समाधान उपलब्ध है

अतिरिक्त चुनौती

व्यायाम#regex.m7.l4.e3
प्रयास: 0लोड हो रहा है...

Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.

संपादक लोड हो रहा है...
संकेत दिखाएँ

Enclose the math operators character class in capture parentheses to preserve them in the split array.

3 प्रयासों के बाद समाधान उपलब्ध है