मामला:नियमित अभिव्यक्ति - मैच शब्द केवल लाइन में एक बार
- अलविदा hellot हैलो अलविदा नमस्ते नमस्ते ehello अलविदा
- ehello अलविदा
मैं लाइन 1 (केवल मेल खाते हैं 'हैलो करना चाहते हैं 'एक बार!) लाइन 2 से मिलान नहीं करना चाहते हैं (इसमें' हेलो 'एक से अधिक बार शामिल है)
नकारात्मक देखो का उपयोग करने की कोशिश की आगे पीछे देखो और क्या नहीं ... बिना किसी वास्तविक succ के
^(?!.*\bhello\b.*\bhello\b).*\bhello\b.*$
पहले, देखें आप नहीं है 'हैलो' में दो बार, और फिर आप की जाँच करें: ईएसएस ..
क्यों न केवल इसे एक बार ढूंढें और जांचें कि यह उसके बाद फिर से मौजूद नहीं है? उस तरह से थोड़ा कम दोहराया लगता है। – Wiseguy
@Wiseguy - '^। * हैलो (?!। * हैलो) जैसे एक पैटन काम नहीं करेगा, क्योंकि यह हमेशा लाइन के आखिरी 'हैलो' से मेल खाता है। आपको '^ (? :(?! हैलो) जैसे कुछ चाहिए।) * हैलो (?!। * हैलो) ', जो अधिक सुरुचिपूर्ण नहीं है। हालांकि मैंने कुछ आसान याद किया होगा ... – Kobi
@Wiseguy - नहीं। Regex इंजन असफल होने के लिए मैच करने की कोशिश करता है। यह मिल सकता है, तो यह होगा। – Kobi