2011-02-15 11 views
65

स्ट्रिंग में केवल एक निश्चित शब्द (उदा। 'टेस्ट') है या नहीं, यह जांचने के लिए रेगेक्स क्या है? मैंने कुछ googling किया है लेकिन इस तरह के एक regex का एक सीधा उदाहरण नहीं मिल सकता है। यह एक निर्माण स्क्रिप्ट के लिए है लेकिन किसी भी विशेष प्रोग्रामिंग भाषा के लिए कोई असर नहीं है।रेगेक्स शामिल है?

/Test/ 

ऊपर regex शाब्दिक स्ट्रिंग "टेस्ट" के लिए जाँच करेगा कहीं यह भीतर पाया जा रहा है:

उत्तर

56

मान लिया जाये कि नियमित PCRE शैली regex जायके:

आप एक एकल, पूर्ण शब्द के रूप में यह जांच करने के लिए चाहते हैं, यह \bTest\b अगर वांछित और अपने प्रोग्रामिंग भाषा के लिए सीमांकक है, मामले असंवेदनशीलता के लिए उपयुक्त झंडे के साथ। \b "शब्द सीमा" का प्रतिनिधित्व करता है, यानी, वर्णों के बीच एक बिंदु जहां एक शब्द को प्रारंभ या समाप्त करने के लिए माना जा सकता है। उदाहरण के लिए, चूंकि शब्दों को अलग करने के लिए रिक्त स्थान का उपयोग किया जाता है, इसलिए अंतरिक्ष के दोनों तरफ एक शब्द सीमा होगी।

आप शब्द की भाग के रूप में जांच करने के लिए चाहते हैं, यह मामला असंवेदनशीलता के लिए उपयुक्त झंडे के साथ फिर से बस Test है,। ध्यान दें कि आमतौर पर, समर्पित "सबस्ट्रिंग" विधियां इस मामले में तेज़ी से होती हैं, क्योंकि यह रेगेक्स को पार्स करने के ऊपरी हिस्से को हटा देती है।

+1

"' \ b' एक "शब्द सीमा" का प्रतिनिधित्व करता है, यानी, कुछ शब्द जो दो शब्दों को अलग करता है (उदाहरण के लिए एक स्थान)। " '\ b' किसी स्थान से मेल नहीं खाता है; यह एक दावा है जो * अक्षरों के बीच * (या ज्यादातर मामलों में, रेखा के आरंभ या अंत में) के बीच मेल खाता है। – strager

+1

@स्ट्रैगर: हाँ, आप सही हैं - मेरी व्याख्या थोड़ा कमजोर थी। मैं संपादित करूंगा। –

63

बस अपने पैटर्न लंगर नहीं है।

+1

धन्यवाद, मुझे नहीं पता था कि यह इतना आसान था! मैंने निश्चित रूप से इसे अपने गुगलिंग में नहीं देखा। मेरा पैटर्न लंगरने से आपका क्या मतलब है? – dotnetdev

+5

आप स्ट्रिंग की शुरुआत या अंत के विरुद्ध मिलान करने के लिए पैटर्न को एंकर कर सकते हैं उदा।/^ टेस्ट/या/टेस्ट $/क्रमशः या यहां तक ​​कि/^ टेस्ट $/बिल्कुल मिलान करने के लिए। उदाहरण कमजोर है क्योंकि यह समानता की तुलना करने पर कोई लाभ नहीं प्रदान करता है, उदाहरण के लिए जब फॉर्म फ़ील्ड सत्यापन करना होता है तो/^ \ d + $/जैसे रेगेक्स केवल तभी मेल खाता है जब फ़ील्ड में कम से कम एक अंक होता है और संख्यात्मक अंकों के अलावा कुछ भी नहीं होता है। –

-5

मैं कुछ साल देर से हूं, लेकिन ऐसा क्यों नहीं?

[Tt][Ee][Ss][Tt] 
+4

यह उत्तर निम्न गुणवत्ता वाली समीक्षा कतार में बदल गया है, संभवतः क्योंकि आपने कोड को समझाया नहीं है। यदि आप इसे समझाते हैं (आपके उत्तर में), तो आपको अधिक अपवर्तित होने की अधिक संभावना है- और प्रश्नकर्ता वास्तव में कुछ सीखता है! –

+3

यह बहुत सामान्य नहीं है - कल्पना करें कि क्या शब्द आपको खोजना था, उपयोगकर्ता से आया था। आपको प्रत्येक पत्र के लिए '[एए]' पैटर्न उत्पन्न करना होगा और यह बहुत बदसूरत बहुत तेज़ हो जाएगा। –