जवाबों:
मेटाचैटर \b
एक एंकर है जैसे कि कैरेट और डॉलर साइन। यह एक ऐसी स्थिति से मेल खाता है जिसे "शब्द सीमा" कहा जाता है । यह मैच जीरो-लेंथ है।
तीन अलग-अलग पद हैं जो शब्द सीमा के रूप में योग्य हैं:
सीधे शब्दों में कहें: \b
आपको "पूरे शब्द केवल" प्रदर्शन करने की अनुमति देता है, जिसके रूप में एक नियमित अभिव्यक्ति का उपयोग कर \bword\b
। एक "शब्द चरित्र" एक ऐसा चरित्र है जिसका उपयोग शब्दों को बनाने के लिए किया जा सकता है। सभी वर्ण जो "शब्द वर्ण" नहीं हैं, वे "गैर-शब्द वर्ण" हैं ।
सभी स्वादों में, वर्ण [a-zA-Z0-9_]
शब्द अक्षर हैं। ये शॉर्ट-हैंड कैरेक्टर क्लास से भी मेल खाते हैं \w
। स्वाद की तुलना में शब्द सीमाओं के लिए "अस्की" दिखाने वाले स्वाद केवल शब्द वर्णों के रूप में पहचानते हैं।
\w
"शब्द चरित्र" के लिए खड़ा है , आमतौर पर [A-Za-z0-9_]
। अंडरस्कोर और अंकों को शामिल करने पर ध्यान दें।
\B
का नकारात्मक संस्करण है \b
। \B
हर उस स्थिति में मेल खाता है जहाँ \b
नहीं है। प्रभावी रूप से, \B
दो शब्द वर्णों के साथ-साथ दो गैर-शब्द वर्णों के बीच किसी भी स्थिति में मेल खाता है।
\W
के लिए लघु [^\w]
संस्करण है \w
।
\w
एक शब्द चरित्र से मेल खाता है। \b
एक शून्य-चौड़ाई वाला मैच एक स्थिति चरित्र से मेल खाता है जिसमें एक तरफ एक शब्द चरित्र है, और कुछ ऐसा है जो दूसरे पर एक शब्द चरित्र नहीं है। (उन चीजों के उदाहरण जो शब्द वर्ण नहीं हैं, उनमें व्हाट्सएप, स्ट्रिंग की शुरुआत और अंत आदि शामिल हैं)
\w
मैचों a
, b
, c
, d
, e
, और f
में "abc def"
\b
मैचों से पहले (शून्य चौड़ाई) स्थिति a
, के बाद c
, पहले d
, और बाद f
में"abc def"
देखें: http : //www. अनियमित-expressions.info/reference.html/
\b
एक शून्य-चौड़ाई का दावा; यह एक चरित्र से मेल नहीं खाता , यह एक स्थिति से मेल खाता है ।
@ महेंदर, आप शायद \W
(के बजाय \w
) और के बीच का अंतर रखते थे \b
। यदि नहीं, तो मैं @BoltClock और @jwismar के साथ ऊपर सहमत होना चाहिए। अन्यथा पढ़ना जारी रखें।
\W
किसी भी गैर-शब्द चरित्र से मेल खाएगा और इसलिए इसका उपयोग शब्द सीमाओं से मेल खाने के लिए करने की कोशिश करना आसान है। समस्या यह है कि यह एक रेखा के प्रारंभ या अंत से मेल नहीं खाएगा। \b
यह शब्द सीमाओं से मेल खाने के लिए अधिक अनुकूल है क्योंकि यह एक रेखा के प्रारंभ या अंत से मेल भी खाएगा। मोटे तौर पर बोलना (अधिक अनुभवी उपयोगकर्ता मुझे यहाँ सही कर सकते हैं) के \b
बारे में सोचा जा सकता है (\W|^|$)
। [संपादित करें: जैसा कि @ gamega नीचे उल्लेख करता है, \b
एक शून्य-लंबाई वाला मैच है, इसलिए (\W|^|$)
यह कड़ाई से सही नहीं है, लेकिन उम्मीद है कि यह अलग होने में मदद करेगा।]
त्वरित उदाहरण: स्ट्रिंग के लिए Hello World
, .+\W
मिलान होगा Hello_
(अंतरिक्ष के साथ) लेकिन मेल नहीं खाएगा World
। और .+\b
दोनों का मेल होगा ।Hello
World
\b
अर्थ से असहमत हूं (\W|^|$)
, क्योंकि (\W|^|$)
मिलान परिणाम के अंदर गैर-शब्द वर्ण शामिल होगा। आप इस तथ्य को यहाँ देख सकते हैं => regexr.com/3qf98 ।
\b
मेरे लिए, इसका मतलब है (?<=\W|^|$)
जब एक पैटर्न से पहले इस्तेमाल किया जाता है और (?=\W|^|$)
एक पैटर्न के बाद उपयोग किया जाता है। आप देख सकते हैं कि मैं यहाँ क्या बोल रहा हूँ => regexr.com/3qf9h । बस \b
यहाँ एंकर के परिणाम के साथ तुलना करें => regexr.com/3qf9t
\b <= this is a word boundary.
एक ऐसी स्थिति से मेल खाता है जो एक शब्द चरित्र द्वारा पीछा किया जाता है, लेकिन एक शब्द चरित्र से पहले नहीं है, या जो एक शब्द चरित्र से पहले है लेकिन एक शब्द चरित्र द्वारा पीछा नहीं किया गया है।
\w <= stands for "word character".
यह हमेशा ASCII वर्णों से मेल खाता है [A-Za-z0-9_]
क्या आपके द्वारा मिलान करने के लिए कुछ विशिष्ट है?
शुरुआती के लिए या सिर्फ अपनी भूख को गीला करने के लिए कुछ उपयोगी रेगेक्स वेबसाइट।
मुझे यह एक बहुत उपयोगी पुस्तक लगी:
\w
हमेशा ASCII वर्णों के बराबर नहीं होता है [A-Za-z0-9_]
- यह अल्फ़ान्यूमेरिक यूनिकोड कोड बिंदुओं से भी मेल खाएगा, और यदि लोकेल को उचित रूप से सेट किया गया है तो 8-बिट आईएसओ-लैटिन -1 अक्षरों से मेल खा सकता है। ।
\w
है न एक शब्द सीमा, यह अंडरस्कोर सहित किसी भी शब्द चरित्र, मेल खाता है: [a-zA-Z0-9_]
। \b
है : एक शब्द सीमा यह है कि, यह एक शब्द और एक गैर अक्षरांकीय चरित्र के बीच स्थिति से मेल खाता है \W
या [^\w]
।
ये कार्यान्वयन भाषा से भाषा में भिन्न हो सकते हैं, हालांकि।
\w
एक शब्द चरित्र का प्रतिनिधित्व करता है , जबकि एक शब्द चरित्र और एक गैर-शब्द चरित्र के बीच एक शब्द सीमा का\b
प्रतिनिधित्व करता है । वे एक ही बात नहीं कर रहे हैं