কেন ভিম রেজেক্স 9 টিরও বেশি ক্যাপচার গ্রুপকে মঞ্জুরি দেয় না?


16

থেকে :h E65আমরা দেখতে পাচ্ছি যে ভিম প্রতিস্থাপনের আদেশে 9 টিরও বেশি ক্যাপচার গ্রুপকে অনুমতি দেয় না।

উদাহরণস্বরূপ নিম্নলিখিত কমান্ডটি কাজ করবে:

s/\v(a)(b)(c)(d)(e)(f)(g)(h)(i)/\9\8\7\6\5\4\3\2\1

তবে আরও একটি ক্যাপচার গ্রুপের সাথে এটি ব্যর্থ হবে:

s/\v(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)/\10\9\8\7\6\5\4\3\2\1

আমার প্রশ্ন এটি ব্যর্থ হয় কেন তা নয় (এটি একটি ভিম হার্ড সীমা) নয় তবে কেন ভিমের এই সীমাটি মোটেই রয়েছে?

এছাড়াও, আমি জানি যে 9 টিরও বেশি ক্যাপচার গ্রুপের সাথে একটি বাস্তব জীবনী রেজেক্স সম্ভবত পড়তে এবং বজায় রাখতে বেশ রাক্ষসী হতে পারে তবে আমি এখনও আগ্রহী।


2
: হয়তো তেজ একমাত্র সম্পর্কিত নয় stackoverflow.com/a/10993346/2558252
nobe4

1
@ নোবে ৪: আকর্ষণীয়! সুতরাং সম্ভবত এই সরঞ্জামগুলি তৈরি করা লোকেরা 9 টিরও বেশি গ্রুপকে অকেজো বলে মনে করেছে ...
স্ট্যাটক্স

আমি মনে করি এই সীমাটি vi এর থেকে এসেছে, যা এড / সেড থেকে সীমা উত্তরাধিকার সূত্রে পেয়েছে। কয়েক বছর আগে আমি 99 টি দল পর্যন্ত সমর্থন করার জন্য একটি প্যাচ তৈরি করেছি, তবে এটি অন্তর্ভুক্ত ছিল না
খ্রিস্টান ব্রাবাঁদ

1
@ ক্রিশ্চিয়ানব্রাব্যান্ড আরও বেশি কার্যকর সংযোজন হ'ল এর মতো সংখ্যাযুক্ত পতাকা প্রয়োগ করা sed: s/.../.../3প্যাটার্নটির কেবলমাত্র তৃতীয় উপস্থিতিকে প্রতিস্থাপন করবে। এটি সম্ভবত বৈশিষ্ট্যটি আমি ভিমের মধ্যে সবচেয়ে বেশি মিস করি।
সাতো ক্যাটসুরা

2
নামকৃত ক্যাপচারগুলিকে সমর্থন করা এই সমস্যাটি দূর করার অন্য উপায়। বলা হচ্ছে, বেশিরভাগ সময় আমি 9 টি ক্যাপচার গ্রুপগুলির কাছাকাছি কোথাও দেখেছি যখন লোকেরা জানত না যে তারা ক্যাপচারকারী দলগুলি ব্যবহার করতে পারে - \%()
jamessan

উত্তর:


24

এর সুস্পষ্ট কারণ হ'ল দুটি বা ততোধিক সংখ্যার গোষ্ঠীগুলি অস্পষ্ট: \12গ্রুপ 12 হিসাবে গ্রহণ করা উচিত , বা স্ট্রিংয়ের পরে গ্রুপ 1 হিসাবে নেওয়া উচিত 2?

দক্ষতার সাথে সম্পর্কিত অন্যান্য কারণ রয়েছে (এক্সফোনেনশিয়াল ম্যাচের সময় এবং এর মতো)। এগুলি যখন edলেখা হয়েছিল তখন শো স্টপার ছিল। এর পর থেকে আরও ভাল অ্যালগরিদমগুলি আবিষ্কার হয়েছে।


এটি একটি ভাল সম্ভাবনা, আপনার এ বিষয়ে কোনও রেফারেন্স / পড়া আছে কি?
nobe4

2
@ nobe4 অস্পষ্টতার অংশের জন্য: না, তবে আইএমও এটি সুস্পষ্ট। দক্ষতার অংশের জন্য, আপনাকে রেগেক্সপসের প্রাথমিক প্রয়োগগুলি সম্পর্কে পড়তে হবে। এটি তখন একটি সুপরিচিত সমস্যা ছিল। আমার কাছে সঠিক উদ্ধৃতি নেই, তবে এগুলি খুঁজে পাওয়া শক্ত হবে না।
সাতো ক্যাটসুরা

সত্যিই এটি পুরোপুরি বিশ্বাসযোগ্য শোনাচ্ছে।
স্ট্যাটক্স

4
হ্যাঁ, এটি প্রায় নিশ্চিতভাবেই যে পার্সারটি ব্যাকস্ল্যাশের পরে একটি অঙ্কের সন্ধান করতে লেখা হয়েছিল, এবং কখনই পরিবর্তিত হয়নি। এটি যথেষ্ট সাধারণ ছিল, অনেক দিন আগে। অন্যান্য ভাষা এই সমস্যা এড়ানোর উপায় সঙ্গে আসা পর্যন্ত আছে (উদাহরণস্বরূপ, শুধুমাত্র বিবেচনা করা \11একটি ক্যাপচার একটি রেফারেন্স যদি তাদের অন্তত 11, যা অসঙ্গত কিন্তু সাধারণত ঠিক আছে আর ভালো জিনিস \g{11}backreferences এবং ${11}বদল জন্য), কিন্তু তেজ কখনোই তাদের যে কোনও একটি পরিচয় করিয়ে দিলেন।
hobbs
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.