स्ट्रिंग के लिए रेगेक्स शामिल हैं?


114

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

जवाबों:


78

नियमित PCRE शैली regex जायके ग्रहण:

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

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


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

1
@strager: हाँ, आप सही कह रहे हैं - मेरा स्पष्टीकरण थोड़ा अड़ियल था। मैं संपादित करूँगा।
माइकल मैडसेन

117

बस अपने पैटर्न को लंगर न डालें:

/Test/

उपरोक्त रेगेक्स शाब्दिक स्ट्रिंग "टेस्ट" के लिए जांच करेगा कि यह कहीं भीतर पाया जा रहा है।


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

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

-13

मुझे कुछ साल हो गए हैं, लेकिन ऐसा क्यों नहीं है?

[Tt][Ee][Ss][Tt]

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

6
यह बहुत सामान्य नहीं है - कल्पना करें कि क्या आपको जिस शब्द को खोजना था वह उपयोगकर्ता से आया है। आपको [Aa]हर अक्षर के लिए पैटर्न उत्पन्न करना होगा और यह बहुत बदसूरत होगा।
प्लैटिनम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.