রেগেক্সের জন্য সমর্থন পিছনে এবং সামনে তাকান?


12

আমার যেমন রেজেক্স ক্যোয়ারী প্রতিস্থাপন করা দরকার that

fooমধ্যে foo barমিলেছে, কিন্তু fooমধ্যে foo bazনয়। সাধারণত আমি Regex বর্ণন এগিয়ে যেমন ব্যবহার করেন, হবে foo(?=bar)

যাইহোক, দেখে মনে হচ্ছে ইমাকস এটি করতে পারে না? ভিম সক্ষম বলে মনে হচ্ছে , তবে স্পেসম্যাকগুলিতে অশুভ মোড পারে না।


এটি এছাড়াও রয়েছে: github.com/gamesun/emacs-regex-lookaround , কিন্তু আমি এই প্যাচটি দিয়ে নির্মাণের চেষ্টা করিনি, এবং দেখে মনে হচ্ছে এটি বেশ কিছুক্ষণ হয়ে গেছে।
wvxvw

উত্তর:


10

না, ইমাস নিয়মিত এক্সপ্রেশনগুলি নির্বিচারে শূন্য-প্রস্থের চেহারা-এগিয়ে / পূর্ববর্তী অবস্থানগুলির সমর্থন করে না।

এনবি এভিল এবং স্পেসম্যাকস (সমস্ত এলিস্প লাইব্রেরির মতো) যখন ইমাস লিস্প ভাষা প্রয়োগের বিষয়ে প্রশ্ন আসে তখন তা অপ্রাসঙ্গিক।


সুতরাং এটি fooমধ্যে foobarকিন্তু না প্রতিস্থাপন অসম্ভব foobaz? এটি একটি সাধারণ যথেষ্ট অপারেশন যা আমি ভেবেছিলাম একটি সমাধান অবশ্যই হবে। সম্ভবত সামনে এবং পিছনে খুঁজছেন ভুল পদ্ধতির?
হাইজেনবার্গ

এটি কঠোরভাবে সমতুল্য নয় তবে এর সাথে প্রতিস্থাপন করা foo\(bar\)এমন baz\1সব ক্ষেত্রেই যথেষ্ট হবে যেখানে barআরও মিল নেই।
ফিলস

আপনি যদি এলিজপ লিখছেন তবে আপনার প্রচুর নমনীয়তা রয়েছে এবং যদি আপনি ইন্টারেক্টিভভাবে প্রতিস্থাপন করেন তবে প্রতিস্থাপনের সময় আপনি স্বেচ্ছাসেবক এলিজপটি আহ্বান করতে পারেন, তাই শেষ পর্যন্ত এই জিনিসগুলি করার উপায় রয়েছে। আপনি যেমন এই দৃser়বিজ্ঞানের সাথে করতে পারেন ঠিক ততটা সুবিধাজনক নয়।
ফিলস

উদাহরণ: প্রতিস্থাপন fooসঙ্গে \,(if (looking-at "bar") "baz" \&)প্রতিস্থাপন করবে fooসঙ্গে bazনিম্নলিখিত টেক্সট হলে bar(এবং প্রতিস্থাপন fooসঙ্গে fooঅন্যথায়)। এটি এখনও মেলানোর মতো একই জিনিস নয় fooযখন এটি অনুসরণ barকরবে তবে এটি অন্য বিকল্প।
ফিল্ডস

আমি অনুমান করি এটি আপনি উপরে যা বলেছেন তার মতোই, তবে মনে হচ্ছে আপনি টাইপ করতে পারেন: সিএসএম-% foo \ (বার \) RET FOO \ 1 RET এ FOO বারের সাথে সমস্ত foo বার প্রতিস্থাপন করতে, তবে সমস্ত foo বাজকে একা রেখে যান। এটি কি আপনি চেয়েছিলেন কিছু হারিয়েছে?
জন কিচিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.