কোনও ভিম ​​রেজেেক্স আক্ষরিককে বিভিন্ন যাদু মোডে রূপান্তর করার কোনও উপায় আছে কি?


14

যদি আমার কাছে স্ট্রিং আক্ষরিক একটি জিম ভিগ রেজেেক্স থাকে, তবে পুরো রেজেজকে কোনও বিকল্প উপস্থাপনায় রূপান্তর করার কোনও উপায় আছে যা একটি ভিন্ন যাদু মোড ব্যবহার করে, তাই আমি সেই সমতুল্য রেজেক্সকে উত্স কোডে পেস্ট করতে পারি?

উদাহরণস্বরূপ, যদি আমি এই যাদু-মোড প্যাটার্নটি রূপান্তর করতে চাই:

'\m-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>'

একে আরও পঠনযোগ্য করে তুলতে খুব-যাদু-মোডে, এরকম কিছু:

'\v-=<\d+L=>|0[xX][0-9a-fA-F]+>'

আমি প্রায়শই তাদের হাতে রূপান্তর করার চেষ্টা করে ভুল করি।


আমি একটি সম্পর্কে অবগত নই। আপনি কি সবসময় তাদের একক উদ্ধৃত স্ট্রিংগুলিতে রাখার পরিকল্পনা করছেন?
এফডিনফ

হয়তো এই শুরুর বিন্দু হতে পারে। আমি তবে এটি সবেমাত্র পরীক্ষা করেছি।
ক্রিশ্চিয়ান ব্র্যাব্যান্ডটি

প্রশ্নের শিরোনাম সম্পর্কে, এটি শক্ত, খুব যাদু রেজেক্সকে [0-9]+কোনও যাদুতে রূপান্তর করার বিষয়ে চিন্তা করুন ... ;-)
কেন্ট

সুতরাং আমি এটির জন্য একটি প্লাগইন তৈরি করার চেষ্টা করছি , এটি একধরণের কাজ তবে এটি নিখুঁত হওয়া থেকে দূরে। এছাড়াও রেফারেন্সের জন্য একটি প্লাগইন রয়েছে যা রুবি / পার্ল রেজেক্সকে
স্ট্যাটক্স

1
@ মুউমাইন্ড আমার মনে হয় যে আপনি কোন ধরণের তুলনা খুঁজছেন তা আমি বুঝতে পারি না :-) এবং প্লাগইনটির উন্নতির বিষয়ে, এটি বাগের সংকেত দিতে বা গিলে একটি অনুরোধ প্রস্তাব দেওয়ার জন্য এটি ব্যবহারের গিথুব পরীক্ষা করতে দ্বিধা করবেন না, আমি আনন্দের সাথে এটি দেখতে চাই!
স্ট্যাটক্স

উত্তর:


3

আদেশ

:s\v\\(\W)/\1/

বেশিরভাগ যে কোনও প্যাটার্নটি \vমোডে রূপান্তর করতে পর্যাপ্ত হওয়া উচিত । এটি \mযদিও লিল ' চিহ্নিতকারীটিকে অদলবদল করবে না - এবং আমার জ্ঞানের মতে এটি একক প্রতিস্থাপনে অসম্ভব। যদিও এটি ম্যানুয়ালি টাইপ করতে যথেষ্ট সংক্ষিপ্ত, এবং তারপরে আপনি কেবল :s/\\m/\\vমোড চিহ্নিতকারীটির জন্য করতে পারেন ।

\Wশর্টহ্যান্ড হ'ল এটির জন্য [^a-zA-Z0-9_](অবহেলিত) অক্ষরগুলির সেট যা খুব যাদু মোড পরিচালনা করে। এটি কেবলমাত্র সেই অক্ষরের একটির পূর্ববর্তী যেকোন ব্যাকস্ল্যাশগুলি মুছবে। জ্ঞাত সমস্যা: এটি \\ভিতরে স্ট্রিংগুলি প্রতিস্থাপন করবে \। আপনি প্রতিস্থাপন করতে পারে \Wসঙ্গে \c[^a-z0-9\_]এই প্রশমিত, কিন্তু এটি এখনও জগাখিচুড়ি আপ হবে আপনার Regex আক্ষরিক আপনি এটা একাধিক বার চালানোর এবং আর পালাবার স্ট্রিং (ধারণকারী উপর ব্যর্থ হন \\\\উদাহরণস্বরূপ)

আপডেট: আপনার যদি \vআবার রূপান্তর করতে হয় তবে মূল প্রশ্নটি অস্পষ্ট করে তোলে \mতবে কমান্ডটি এখানে রয়েছে:

:s/\v(\\)@<!(\c[^a-z0-9\-\\\[\]\'_])/\\\2/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.