टेक्स्ट और रोजमर्रा के टूल · टेक्स्ट टूलकिट
संपूर्ण-शब्द खोज कैसे काम करती है: शब्द सीमाएँ और बिल्ली|कुत्ते की समस्या
· यह काम किस प्रकार करता है
regex ढूँढें और बदलें पाठ संपादन
समझाता है कि JavaScript रेगुलर एक्सप्रेशन में शब्द सीमा क्या है, क्यों 'कैट' को 'कॉनकैटनेट' के अंदर मेल नहीं खाना चाहिए, और सीमाएं जोड़ने से पहले कैट|डॉग जैसे विकल्प को समूहीकृत क्यों करना पड़ता है।
वह नाम जिसने 'कॉनकैटनेट' बदल दिया - क्यों एक छोटे शब्द को खोजने और बदलने से लंबे शब्दों को नुकसान पहुंचता है
किसी उत्पाद का नाम बदलना तब तक हानिरहित दिखता है जब तक कि असंबद्ध शब्दों के अंदर एक संक्षिप्त नाम प्रकट न हो जाए। `cat` की प्रत्येक घटना को `lynx` से बदलने पर `concatenate` को `conlynxenate` में बदल दिया जाता है, भले ही किCAडिटर का उस क्रिया के भाग का नाम बदलने का इरादा नहीं था। जब खोज नियम बहुत व्यापक हो तो अकेले मिलान गणना दस्तावेज़ की सुरक्षा नहीं कर सकती।
कोई भी प्रतिस्थापन होने से पहले संपूर्ण-शब्द मिलान नियम को संक्षिप्त कर देता है। ToolAcre में, संपूर्ण शब्द को सक्षम करने से स्टैंडअलोन `cat` योग्य हो जाता है, जबकि `concatenate` के अंदर समान अक्षरों को अछूता छोड़ दिया जाता है। यह अंतर शब्दकोश-आधारित के बजाय संरचनात्मक है: नियमित-अभिव्यक्ति इंजन प्रत्येक संभावित मिलान के तुरंत बाद वर्णों की जांच करता है।
\b का क्या अर्थ है - एक शब्द वर्ण और एक गैर-शब्द वर्ण के बीच शून्य-चौड़ाई की स्थिति
JavaScript रेगुलर एक्सप्रेशन में, `` शून्य-चौड़ाई वाली शब्द सीमा को चिह्नित करता है। इसमें कोई अक्षर, स्थान या विराम चिह्न नहीं लगता। इसके बजाय, यह उस स्थिति में सफल होता है जहां एक तरफ एक शब्द चरित्र है और दूसरा पक्ष नहीं है, जिसमें पाठ की शुरुआत या अंत भी शामिल है जब आसन्न चरित्र एक शब्द चरित्र के रूप में योग्य होता है।
JavaScript की `w` कैटेगरी इस कार्यान्वयन के लिए प्रासंगिक शब्द वर्ण प्रदान करती है: ASCII अक्षर, अंक और अंडरस्कोर। इसलिए `cat` रिक्त स्थान, अल्पविराम या रेखा के अंत में `cat` से मेल खाता है, लेकिन `concatenate` के अंदर `cat` खंड से नहीं, क्योंकि उस खंड के दोनों पक्ष शब्द वर्णों के माध्यम से जारी रहते हैं और वहां कोई सीमा मौजूद नहीं है।
संपूर्ण शब्द शाब्दिक मोड में - खोज पाठ को पहले छोड़ दिया जाता है, फिर सीमाओं में लपेट दिया जाता है
रेगेक्स बंद होने पर, ToolAcre सबसे पहले खोज टेक्स्ट में प्रत्येक रेगुलर-एक्सप्रेशन मेटाकैरेक्टर से बच जाता है। एक अवधि एक शाब्दिक अवधि बनी रहती है, कोष्ठक शाब्दिक कोष्ठक बने रहते हैं और एक प्लस चिह्न एक प्लस चिह्न बना रहता है। उस भागने वाले चरण के बाद ही पूरा शब्द परिणामी स्रोत को लपेटता है, इसलिए उपयोगकर्ता विराम चिह्न चुपचाप रेगेक्स सिंटैक्स नहीं बन सकता है।
रैपर प्रदर्शित स्थान के बिना `(?:… )` है: आंतरिक `(?:…)` एक गैर-कैप्चरिंग समूह है। `cat` जैसे सरल शाब्दिक के लिए, प्रभाव `cat` के बराबर है। समूहीकरण अभी भी मायने रखता है क्योंकि एक संकलन पथ को कैप्चर-ग्रुप नंबरिंग को बदले बिना सरल शब्दों और अधिक जटिल विकल्पों को सुरक्षित रूप से संभालना चाहिए।
रेगेक्स मोड में संपूर्ण शब्द - बिल्ली | कुत्ते को एक समूह के रूप में क्यों बांधा जाना चाहिए, या सीमा केवल एक शाखा से जुड़ी होती है
रेगेक्स मोड दर्ज किए गए पैटर्न को बरकरार रखता है, लेकिन सीमाएं जोड़ने से पहले पूरा शब्द अभी भी इसे समूहित करता है। `cat|dog` के लिए, ToolAcre वैचारिक रूप `(?:cat|dog)` संकलित करता है। इसलिए दोनों विकल्प शब्द सीमाओं पर शुरू और समाप्त होने चाहिए, इसलिए स्टैंडअलोन `cat` और स्टैंडअलोन `dog` एक ही नियम के तहत मेल खाते हैं।
उस समूह के बिना, `cat|dog` दो शाखाओं में विभाजित हो जाएगा: एक बाईं सीमा केवल `cat` को बाधित करेगी, जबकि एक दाईं सीमा केवल `dog` को बाधित करेगी। आसपास के अनुक्रम की तुलना में प्रत्यावर्तन की प्राथमिकता कम होती है। समूहीकरण वह है जो एक दावे को असमान रूप से वितरित करने के बजाय दोनों सीमा दावों को पूरी पसंद पर लागू करता है।
कारगर उदाहरण - किसी दस्तावेज़ में संपूर्ण शब्द के साथ किसी उत्पाद का नाम बदलना, और अपेक्षाओं के विरुद्ध प्रतिस्थापन गणना का निरीक्षण करना
`cat`, `dog`, `concatenate`, `dogged` और `cat, dog.` जैसे विराम चिह्न वाला एक प्रतिनिधि मार्ग चिपकाएँ, `cat|dog` दर्ज करें, रेगेक्स और संपूर्ण शब्द चालू करें, और सभी को नए उत्पाद नाम से बदलें। दो स्टैंडअलोन पशु शब्द बदलने चाहिए; लंबे शब्द बिल्कुल वैसे ही रहने चाहिए जैसे वे थे।
संपादन स्वीकार करने से पहले रिपोर्ट की गई प्रतिस्थापन संख्या पढ़ें। यदि दस्तावेज़ में तीन ज्ञात स्टैंडअलोन संदर्भ हैं लेकिन टूल दो या बारह रिपोर्ट करता है, तो पूर्ववत करें का चयन करें और नमूना संदर्भों का निरीक्षण करें। ToolAcre मानक स्ट्रिंग प्रतिस्थापन को कॉल करने से पहले मिलानों की गणना करता है, इसलिए प्रदर्शित कुल आपके द्वारा वास्तव में संकलित खोज नियम पर एक व्यावहारिक जांच है।
जहां शब्द सीमाएं आपको आश्चर्यचकित करती हैं - JavaScript के शब्द वर्ण ASCII अक्षर, अंक और अंडरस्कोर हैं, इसलिए उच्चारण और गैर-लैटिन शब्दों को परीक्षण की आवश्यकता है
ये सीमाएँ बहुभाषी शब्दकोश या यूनिकोड पाठ-विभाजन एल्गोरिथ्म को लागू नहीं करती हैं। चूँकि उच्चारण वाले अक्षर और गैर-लैटिन लिपियाँ यहाँ प्रयुक्त ASCII-शैली शब्द कैटेगरी से बाहर हैं, संपूर्ण शब्द शून्य लौटा सकता है या `café` जैसे शब्दों के लिए आश्चर्यजनक बढ़त स्थिति उत्पन्न कर सकता है। किसी खोज शब्द के अंदर विराम चिह्न समान बेमेल का कारण बन सकता है।
बड़े पैमाने पर संपादन से पहले सटीक भाषा और वर्तनी का परीक्षण करें, विशेष रूप से उच्चारण, एपोस्ट्रोफ या हाइफ़न वाले नामों के लिए। एक सीमा अभिकथन केवल आसन्न वर्ण कैटेगरी की तुलना करता है; यह नहीं पता कि टाइपोग्राफी एक मानव शब्द बनाती है या नहीं। यदि नमूना विफल हो जाता है, तो चेकबॉक्स पर भरोसा करने के बजाय उस परिवेश के लिए जानबूझकर डिज़ाइन किए गए रेगेक्स का उपयोग करें।
जहां JavaScript शब्द सीमाएं आपको आश्चर्यचकित करती हैं: ASCII-शैली के शब्द वर्ण भाषाई शब्द नहीं हैं
टूल एक अलग केस सेंसिटिव विकल्प प्रदान करता है, किसी भी निहितार्थ के विपरीत कि केस हैंडलिंग इंटरफ़ेस से अनुपस्थित है। इसे साफ़ करने से JavaScript का केस-असंवेदनशील ध्वज जुड़ जाता है। हालाँकि, कार्यान्वयन केवल वैश्विक मिलान और वैकल्पिक केस असंवेदनशीलता का उपयोग करता है; इसमें यूनिकोड, मल्टीलाइन, डॉट-ऑल, स्टिकी या अन्य झंडे नहीं जोड़े गए हैं।
यह आलेख `` को यूनिकोड-जागरूक सीमा में नहीं बदलता है या भाषा-विशिष्ट टोकननाइजेशन को हल नहीं करता है। JavaScript प्रॉपर्टी एस्केप यहां कोई विकल्प नहीं है क्योंकि टूल यूनिकोड ध्वज के साथ पैटर्न संकलित नहीं करता है। बहुभाषी एडिटरीय कार्य के लिए, स्पष्ट परीक्षण मामले स्थापित करें और उपयोग में आने वाले ब्राउज़र इंजन द्वारा समर्थित पैटर्न चुनें।
टूल में केस विकल्प मौजूद हैं; यूनिकोड-जागरूक शब्द सीमाएँ नहीं हैं
संपूर्ण शब्द एक रचना नियम है, दूसरा प्रतिस्थापन इंजन नहीं। शाब्दिक मोड खोज से बच जाता है; रेगेक्स मोड इसे सुरक्षित रखता है; फिर वही गैर-कब्जा करने वाला समूह और दो सीमाएँ किसी भी परिणाम को घेर लेती हैं। वह आदेश शाब्दिक विराम चिह्न की रक्षा करता है और `cat|dog` जैसे रेगेक्स विकल्पों को एक बंधी हुई अभिव्यक्ति के रूप में व्यवहार करता है।
विकल्प का उपयोग करें जब स्टैंडअलोन ASCII-शैली शब्द इच्छित लक्ष्य हों, तब प्रतिस्थापन गणना और पूर्ववत नियंत्रण को सजावट के बजाय सुरक्षा उपायों के रूप में मानें। ToolAcre को खोलें और बदलें, स्टैंडअलोन और एम्बेडेड दोनों उदाहरणों के विरुद्ध विकल्प का परीक्षण करें, और उन उदाहरणों के अपेक्षित व्यवहार के बाद ही इसे पूर्ण दस्तावेज़ पर लागू करें।