रेगेक्स ऑपरेटर नहीं


109

Regexes में एक ऑपरेटर नहीं है? उस तार की तरह:"(2001) (asdf) (dasd1123_asd 21.01.2011 zqge)(dzqge) name (20019)"

मैं सभी को हटाना चाहता हूं \([0-9a-zA-z _\.\-:]*\)लेकिन वह नहीं है जहां यह एक वर्ष है (2001):।

तो क्या regex लौटना चाहिए होना चाहिए: (2001) name

नोट: कुछ इस तरह से \((?![\d]){4}[0-9a-zA-z _\.\-:]*\)मेरे लिए काम नहीं करता है ( (20019)किसी तरह भी मेल खाता है ...)


1
ऊपर की तरह एक स्ट्रिंग है और मैं इसे फिर से जोड़ना चाहता हूं, कि रेगेक्स का परिणाम है (2001) name:।
सोननहुत

जवाबों:


112

नहीं, कोई प्रत्यक्ष ऑपरेटर नहीं है। कम से कम जिस तरह से आप उम्मीद करते हैं।

हालाँकि, आप शून्य-चौड़ाई वाले नकारात्मक रूप का उपयोग कर सकते हैं:

\((?!2001)[0-9a-zA-z _\.\-:]*\)

(?!...)पाठ करता है, तो भाग का अर्थ है "केवल मेल खाते हैं निम्नलिखित (: अग्रदर्शी इसलिए) इस नहीं है (इसलिए: नकारात्मक)। इस से मेल खाते हैं लेकिन यह वास्तव में नहीं है उपभोग वर्ण यह मेल खाता है (इसलिए: शून्य चौड़ाई)।

2 अक्षों के साथ लुकरॉइड्स के वास्तव में 4 संयोजन हैं :

  • लुकबाइंड / लुकहैड: निर्दिष्ट करता है यदि बिंदु से पहले या बाद के वर्णों पर विचार किया जाता है
  • सकारात्मक / नकारात्मक: निर्दिष्ट करता है कि क्या पात्रों का मिलान होना चाहिए या नहीं होना चाहिए

धन्यवाद! क्या मैं भी सुझाव दे रहा था, लेकिन वैसे भी अगर मैं उपयोग करता हूं तो \((?![\d]{4})[0-9a-zA-z _\.\-:]+\)अभी भी (20019)इसमें है
सोनहेनुत

अपने प्रश्न के सम्पादन में आपने {4} बाहर का लुक डाला है और इस टिप्पणी में आपने इसे अंदर रखा है : आपने कौन सा प्रयास किया? इसके अलावा: यदि आप (20019)मैच करना चाहते हैं , तो आपको अपने लुक को \) अंदर जोड़ना होगा :\((?![\d]{4}\))[0-9a-zA-z _\.\-:]+\)
जोकिम सउर

आपकी टिप्पणी में ऊपर regex के साथ, यह काम करता है। लेकिन मुझे यह समझ में नहीं आता है ... मुझे नहीं लगता कि आप निम्न भाग से बच जाते हैं \((?![\d]{4} -->\)<--)[0-9a-zA-z _\.\-:]+\)फिर एक ब्रैकेट बंद नहीं होता है, है न?
सोननहुत

मैं समापन कोष्ठक से बचता हूं )क्योंकि मैं शाब्दिक चरित्र से मेल खाना चाहता हूं )(जैसे आप बहुत शुरुआत में करते हैं और आपके रेगेक्स के बहुत अंत में!)। उसके बाद जब मैंने उसका मिलान किया, तो मैंने एक गैर-इस्तेमाल किए गए लुकहेड को समाप्त कर दिया )
जोआचिम सॉर

समझ गया। मैं उन सभी पात्रों से थोड़ा भ्रमित था। धन्यवाद।
सोननहुत

183

काफी नहीं, हालांकि आम तौर पर आप आमतौर पर किसी एक फॉर्म में कुछ वर्कअराउंड का उपयोग कर सकते हैं

  • [^abc]है, जो वर्ण दर वर्ण नहीं है aया bया c,
  • या नकारात्मक दिखावट: a(?!b)जिसका aपालन ​​नहीं किया जाता हैb
  • या नकारात्मक दिखावट:, (?<!a)bजो bपहले से नहीं हैa

हाँ, मुझे लगता है कि नकारात्मक नज़र पीछे है (<! A) b - संदर्भ: regular-expressions.info/lookaround.html
jankins

8
लेकिन [^abc]नहीं मतलब यह होना चाहिए aया bया cनहीं, "नहीं स्ट्रिंग abc"।
बारिश हो रही
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.