2010-09-04 12 views
7

मैंने कुछ समय बिताया है, लेकिन अभी भी समाधान करना है। मुझे नियमित अभिव्यक्ति की आवश्यकता है जो स्ट्रिंग में संकेतों (जैसे सी ++) वाले शब्दों से मेल खाता है।रेगेक्स + (प्लस) संकेतों के साथ एक शब्द से मेल खाने के लिए

मैंने "सामान्य" शब्दों के लिए /\bword\b/ का उपयोग किया है, यह ठीक काम करता है। लेकिन जैसे ही मैं /\bC\+\+\b/ आज़माता हूं, यह अभी काम नहीं करता है। यह कुछ इसमें प्लस संकेतों के साथ गलत कैसे काम करता है।

मुझे यह पता लगाने के लिए एक रेगेक्स चाहिए कि इनपुट स्ट्रिंग में सी ++ शब्द है या नहीं। इनपुट की तरह,

"c++ developer" 
"using c++ language" 

आदि

ps। सी # का उपयोग, .Net Regex.Match फ़ंक्शन।

मदद के लिए धन्यवाद!

उत्तर

15

+ विशेष वर्ण ताकि आप इसे से बचने के लिए

\bC\+\+(?!\w) 

ध्यान दें कि हम उपयोग नहीं कर सकते \b क्योंकि + एक शब्द-चरित्र नहीं है की जरूरत है।

+0

हाय केनी, मैं इसका उपयोग कर रहा हूं। यह देखने में प्रदर्शित नहीं किया गया था। मैंने एक प्रश्न सही कर दिया है। ऐसा काम नहीं करता है। –

+0

@alex: क्या आपने '(?! \ W)' कोशिश की है? – kennytm

+0

के साथ (?! \ W) यह वही करता है जो मुझे चाहिए! बहुत बहुत धन्यवाद –

2

प्लस साइन का विशेष अर्थ है इसलिए आपको इसे \ से बचाना होगा। यही नियम इन पात्रों पर लागू होता है: \, *, +, ?, |, {, [, (,), ^, $,., #, और सफेद स्थान

अद्यतन: समस्या \b अनुक्रम

5

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

\bC\+\+\b "टेस्ट सी ++ टेस्ट" से मेल खाता है लेकिन उदाहरण के लिए "टेस्ट सी ++ टेस्ट" नहीं है। यदि आप अंतिम प्लस साइन के बाद एक सफेद स्थान होने की अपेक्षा करते हैं तो \bC\+\+\s जैसे कुछ आज़माएं।

+0

विशिष्ट रूप से '\ w' '\ w' और' \ W' के बीच मिलान (या वीज़ा बनाम)। – Richard

+0

महान उत्तर के लिए धन्यवाद! \ bC \ + \ + \ s, बहुत अच्छा काम करता है, लेकिन यह अंतिम + चिह्न के बाद भी अंतरिक्ष से मेल खाता है, यह कोई बड़ा मुद्दा नहीं है, लेकिन फिर भी थोड़ा अप्रत्याशित है। –

+0

@alexander आप मैच में इसे शामिल करने से बचने के लिए जगह को एक लुकअप बना सकते हैं: '\ bC \ + \ + (? = \ S)'। –

0

दूसरों के रूप में कहा, आपकी समस्या + संकेत आप सही तरीके से बच गए है, लेकिन \b कि मैच शब्द सीमा है कि शब्द \w और गैर शब्द \W चार बीच जगह ले लेता चार एक शून्य लंबाई है कि नहीं है।

वहाँ भी है अपने regex में एक और गलती है, तो आप c++ (लोअरकेस) के साथ चार C (अपरकेस) मैच के लिए करें.अभियान ताकि आप /\bc\+\+/ करने के लिए अपने regex बदलने के लिए या मामला मैच के लिए असंवेदनशील i संशोधक का उपयोग करना है चाहता हूँ: /\bc\+\+/i

संबंधित मुद्दे

 संबंधित मुद्दे