2012-09-04 12 views
5

लालची होने के लिए कैसे दिखें?
इस मामले में मैं इस बात का उपभोग करना चाहता हूं: यदि मौजूद है।.NET Regex Lookbehind लालची नहीं

m = Regex.Match("From: John", @"(?i)(?<=from:)...."); 
// returns ' Jon' what I expect not a problem just an example 

m = Regex.Match("From: John", @"(?i)(?<=from:?)...."); 
// returns ': Jo' 
// I want it to return ' Jon' 

मैं जब तक आप के बाद कुछ सकारात्मक डाल

@"(?i)(?<=\bsubject:?\s+).*?(?=\s*\r?$)" 

के चारों ओर एक काम मिल गया? तो यह वैकल्पिक लालची खेल से बाहर ले जाता है। इसी कारण से मुझे $ आगे की ओर देखना पड़ा।
लेकिन यदि आपको वैकल्पिक लालची पर समाप्त करने की आवश्यकता है तो नीचे दिए गए स्वीकृत उत्तर के साथ जाना होगा।

उत्तर

4

दिलचस्प, मुझे नहीं पता था कि वे .NET में लालची थे।

(?<=from(:|(?!:))) 

इसका मतलब यह है:: यहाँ एक समाधान है

(
    :  # match a ':' 
    | 
    (?!:) # otherwise match nothing (only if the next character isn't a ':') 
) 

इस मैच के लिए यह मजबूर करता ':' यदि मौजूद हो।

+0

लिटिल वर्बोज़ लेकिन यह काम करता है और यह मेरे लिए काम करता है। धन्यवाद। मैं इसे एक बग मानता हूं कि दिखने वाला लालची नहीं है। – Paparazzi

+0

@ बलाम: बस एहसास हुआ कि इसे कम वर्बोज़ के लिए सरल बनाया जा सकता है। मैंने अपनी पोस्ट अपडेट की। – porges

+0

कोई भी संकलक विफल नहीं करता है कृपया मूल उत्तर पर वापस जाएं या वापस जाएं rSubject = new Regex (@ "(? I) (? <= विषय (: | (?!:))) ........)"); – Paparazzi

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