रेगेक्स के लिए समर्थन पीछे और आगे देखो?


12

मुझे रेगेक्स क्वेरी को प्रतिस्थापित करने की आवश्यकता है, जैसे कि

fooमें foo barमिलान किया जाता है, लेकिन fooमें foo bazनहीं है। आम तौर पर मैं रेगेक्स का उपयोग आगे देखूंगा, जैसे foo(?=bar)

हालाँकि, ऐसा लगता है कि Emacs ऐसा नहीं कर सकते? विम सक्षम लगता है , लेकिन स्पेसमैक्स में बुराई मोड नहीं हो सकता।


यह भी है: github.com/gamesun/emacs-regex-lookaround , लेकिन मैंने इस पैच के साथ निर्माण की कोशिश नहीं की, और ऐसा लगता है कि यह थोड़ी देर हो गई है।
wvxvw

जवाबों:


10

नहीं, Emacs नियमित अभिव्यक्ति मनमाने ढंग से शून्य-चौड़ाई लुक-फॉरवर्ड / दावे के पीछे का समर्थन नहीं करता है।

nb Evil और Spacemacs (सभी विशिष्ट पुस्तकालयों की तरह) जब यह Emacs लिस्प भाषा के कार्यान्वयन के बारे में प्रश्नों की बात करते हैं तो वे अप्रासंगिक हो जाते हैं।


तो यह बदलने के लिए असंभव है fooमें foobarनहीं बल्कि में foobaz? यह एक सामान्य पर्याप्त ऑपरेशन है जो मुझे लगा कि एक समाधान होना चाहिए। शायद आगे और पीछे देखना गलत दृष्टिकोण है?
हाइजेनबर्ग

यह कड़ाई से समतुल्य नहीं है, लेकिन इसके foo\(bar\)साथ baz\1उन सभी मामलों में पर्याप्त होगा जहां barआगे मैच नहीं हुए थे।
फिल्स

यदि आप elisp लिख रहे हैं, तो आपके पास बहुत सारे लचीलेपन हैं, और यदि आप अंतःक्रियात्मक रूप से प्रतिस्थापित कर रहे हैं, तो आप प्रतिस्थापनों के दौरान मनमाने ढंग से elisp लगा सकते हैं, इसलिए अंततः इन चीजों को करने के तरीके हैं। बस उतनी आसानी से नहीं जितनी कि आप उन उक्तियों के साथ कर सकते हैं।
फिल्स

उदाहरण के लिए: जगह fooके साथ \,(if (looking-at "bar") "baz" \&)बदल देगा fooके साथ bazनिम्न पाठ है अगर bar(और की जगह fooके साथ fooअन्यथा)। जो अभी भी केवल मिलान के रूप में ही नहीं है fooजब इसके द्वारा पालन किया जाता है bar, लेकिन यह एक और विकल्प है।
फिल्स

मुझे लगता है कि यह ऐसा है जैसा आपने ऊपर कहा है, लेकिन ऐसा लगता है कि आप टाइप कर सकते हैं: CSM-% foo \ (bar \) RET FOO \ 1 RET सभी फू बार को FOO बार से बदलने के लिए, लेकिन सभी foo baz को अकेला छोड़ दें। क्या यह कोई ऐसी चीज है जो आप चाहते थे?
जॉन किचन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.