क्या TextMate में नियमित रूप से अभिव्यक्ति नहीं करना संभव है?


22

मेरे पास एक Matlab परियोजना है जो मैं OSX संपादक टेक्स्टमेट में काम कर रहा हूं। मुझे एक निश्चित शब्द के सभी उदाहरणों को खोजने की आवश्यकता है, मान लें कि यह "फू" है, जो कि "ए" से पहले नहीं है। या "/" द्वारा सफल हुआ।

हालाँकि, मैं इस तरह से नकारात्मक रूप से परिभाषित होने वाले नियमित अभिव्यक्तियों की खोज करने का कोई तरीका नहीं खोज सकता। क्या किसी को पता है कि क्या "बी के अलावा किसी और चीज से पहले" जैसी किसी चीज की खोज करना संभव है?

(TextMate के । कोसाको द्वारा ओनिगुरुमा नियमित अभिव्यक्ति पुस्तकालय का उपयोग करता है ।)

जवाबों:


31

आप इस वाक्यविन्यास का थोड़ा उपयोग करना चाहते हैं:

(?=subexp)         look-ahead
(?!subexp)         negative look-ahead
(?<=subexp)        look-behind
(?<!subexp)        negative look-behind

आपके मामले में, (?<!\.)foo(?!/)


1
बहुत बढ़िया! मैंने प्रलेखन में उन लोगों की अनदेखी की। धन्यवाद :)
नागल

यह एक शानदार समाधान है जो fooपाठ की शुरुआत या अंत में शब्द की घटना को भी ध्यान में रखता है ।
simhumileco

13

वर्ग कोष्ठक के अंदर ^ (circumflex या caret) अभिव्यक्ति को नकारता है। तो एक "फू" खोजने के लिए एक से पहले नहीं "।" होने वाला:

[^.]foo

यह होना चाहिए (^|[^.])(foo)और यह भी एक अतिरिक्त चरित्र से मेल खाता है।
ctrl-alt-delor-

धन्यवाद, ब्रायन! यह वह वैरिएंट है जिसे मैंने शुरू में कोशिश की थी, लेकिन मैंने वाक्य रचना को गड़बड़ कर दिया और ^ [\] के बजाय ^ [\] की कोशिश की: P
नागल

1
यह काम नहीं करेगा। आप 'को छोड़कर सभी वर्ण चाहते हैं।' जिसका अर्थ है 'कोई भी चरित्र'। आपको इससे बच निकलने की जरूरत है: (^ | [^ \।]) (फू)
एंड्रास गियोम्रे

[stuf] s, t, u, f अक्षरों से मेल खाता है। वर्ग कोष्ठक की सामग्री एक अभिव्यक्ति नहीं है, वे एक सूची है। [^] कुछ भी लेकिन अवधि है। [^ \] कुछ भी ऐसा नहीं है जो बैक स्लैश या डॉट नहीं है। ^ - और केवल ऐसे पात्र हैं जिनका कभी-कभी एक विशेष अर्थ होता है []
शेरवुड बॉट्सफ़ोर्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.