जावास्क्रिप्ट में रेगुलर एक्सप्रेशन में बैकरेफरेंस

बैकरेफरेंस की सामग्री न केवल रिप्लेसमेंट स्ट्रिंग में, बल्कि रेगुलर एक्सप्रेशन में भी उपलब्ध होती है: हम कुछ भी बैकरेफरेंस में रख सकते हैं, और फिर सीधे रेगुलर एक्सप्रेशन में कह सकते हैं कि यहाँ उस बैकरेफरेंस की सामग्री होनी चाहिए।

बैकरेफरेंस की सामग्री उनकी संख्याओं के अनुसार उपलब्ध होती है, जिनके आगे बैकस्लैश लगा होता है। उदाहरण के लिए, पहला बैकरेफरेंस इस तरह उपलब्ध होगा: \1, दूसरा बैकरेफरेंस इस तरह - \2, तीसरा - \3 और इसी तरह आगे।

मुझे यकीन है कि ऊपर लिखी गई सभी बातें अभी आपके लिए काफी अस्पष्ट हैं। यह आश्चर्य की बात नहीं है, क्योंकि बैकरेफरेंस रेगुलर एक्सप्रेशन का सबसे कम समझ आने वाला हिस्सा है। आइए उदाहरणों के माध्यम से समझते हैं।

उदाहरण

मान लीजिए कि हमारे पास इस तरह की स्ट्रिंग है:

javascriptlet str = 'aa bb cd ef';

आइए इसमें वे सभी स्थान ढूंढें जहाँ एक ही अक्षर लगातार दो बार आया है। समस्या को हल करने के लिए, हम कोई भी अक्षर ढूंढेंगे, उसे बैकरेफरेंस में रखेंगे, और फिर जांचेंगे कि अगला वर्ण उस बैकरेफरेंस की सामग्री तो नहीं है:

javascriptlet res = str.replace(/([a-z])\1/g, '!');

परिणामस्वरूप वेरिएबल में यह लिखा जाएगा:

javascript'! ! cd ef'

उदाहरण

मान लीजिए कि हमारे पास इस तरह की स्ट्रिंग है:

javascriptlet str = 'asxca buzxb csgd';

आइए इसमें वे सभी शब्द ढूंढें जिनमें पहला और आखिरी अक्षर एक जैसे हैं। समस्या को हल करने के लिए हम निम्नलिखित पैटर्न लिखेंगे: अक्षर, फिर एक या अधिक अक्षर, और फिर वही अक्षर जो पहला था:

javascriptlet res = str.replace(/([a-z])[a-z]+\1/g, '!');

परिणामस्वरूप वेरिएबल में यह लिखा जाएगा:

javascript'! ! csgd'

व्यावहारिक समस्याएं

Задание 1

एक स्ट्रिंग दी गई है:

javascriptlet str = 'aaa bbb ccc xyz';

वे सभी सबस्ट्रिंग ढूंढें जिनमें लगातार तीन एक जैसे अक्षर हों।

Задание 2

एक स्ट्रिंग दी गई है:

javascriptlet str = 'a aa aaa aaaa aaaaa';

वे सभी सबस्ट्रिंग ढूंढें जिनमें लगातार दो या अधिक एक जैसे अक्षर हों।

Задание 3

एक स्ट्रिंग दी गई है:

javascriptlet str = 'aaa aaa bbb bbb ccc ddd';

वे सभी सबस्ट्रिंग ढूंढें जिनमें लगातार दो एक जैसे शब्द हों।