নোটপ্যাড ++ ব্যবহার করে প্রতিটি লাইনে থাকা সমস্ত নকল শব্দ কীভাবে সরিয়ে ফেলবেন?


11

আমি কীওয়ার্ড সহ লাইনযুক্ত একটি ফাইলে কাজ করছি এবং কিছু লাইনে সদৃশ কীওয়ার্ড রয়েছে।

উদাহরণ স্বরূপ:

dangerous,dangerous,hazardous,perilous

আমি নোটপ্যাড ++ কে বলতে চাই যে প্রতি লাইনে প্রতি নকল শব্দটি আমি মুছে ফেলতে চাই। এই উদাহরণের জন্য dangerous,সরানো হবে:

dangerous,hazardous,perilous

আমার মতো অনেকগুলি লাইন রয়েছে এবং সে কারণেই আমি এটি করার একটি স্বয়ংক্রিয় পদ্ধতি খুঁজছি।


1
কি হবে dangerous,hazardous,dangerous,perilous? অন্য কথায়, সদৃশ শব্দগুলি কি একে অপরের পাশে সর্বদা থাকে?
ড্যানিয়েল বেক

উত্তর:


11

আপনি একটি লাইনে ক্রমাগত সদৃশ শব্দগুলি মুছে ফেলার জন্য একটি নিয়মিত অভিব্যক্তি ব্যবহার করতে পারেন, তবে আমি মনে করি না যে ডুপ্লিকেটেড শব্দগুলি ক্রমাগত নয় (যেমন dangerous, hazardous, dangerous)) মুছে ফেলা সম্ভব ।

নোটপ্যাড ++ এর প্রতিস্থাপন উইন্ডোতে এই রেজেক্সটি ব্যবহার করুন এবং নীচের অনুসন্ধান মোড বিকল্প হিসাবে "নিয়মিত অভিব্যক্তি" নির্বাচন করতে ভুলবেন না:

এই Regex সব পরপর সদৃশ শব্দ সরে যাবে - এটি 2 সদৃশ শব্দ বা 10 সদৃশ শব্দ কিনা পরপর: \b(\w+)(?:,\s+\1\b)+

ঠিক একই নো-কমা রেজেক্সটি হ'ল: \b(\w+)(?:\s+\1\b)+(অন্যান্য ব্যবহারকারীর পক্ষে কার্যকর হতে পারে)।

আপনি যদি একটি Regex মাত্র দুটি সদৃশ শব্দ (ডাবলস) জন্য বিশেষভাবে চান তাহলে, এই Regex ব্যবহার করুন: (\b\w+\b)\W+\1

এই Regex রাখুন দিয়ে প্রতিস্থাপন বক্স শব্দ এক সংঘটন রাখার (অন্যথায় সব পুনরাবৃত্তি শব্দ সরিয়ে দেওয়া হবে): ${1}

এই নিয়মিত প্রকাশগুলি উদাহরণ হিসাবে আপনার প্রশ্নে বর্ণিত মত একটি পরিস্থিতি ঠিক করবে। প্রথম রেজেক্স প্রতিটি প্রতিলিপি শব্দের (উদাহরণস্বরূপ dangerous, dangerous, dangerous, dangerous, hazardous) জন্য কাজ করবে, যখন দ্বিতীয় সংস্করণটি কেবল দুটি অনুলিপি শব্দের জন্য কাজ করবে (উদাঃ dangerous, dangerous, hazardous)।

নোট: রেগুলার এক্সপ্রেশন শুধুমাত্র বিন্যাস প্রশ্নে বর্ণিত প্রয়োগ করা হবে, যার অর্থ ফরম্যাটের চাই যে two words, two words, anotherword, two-words, two-words, anotherword, three words expression, three words expression, anotherwordপরিবর্তন করা যাবে না কারণ Regex তাদের প্রযোজ্য হবে না।


সাহায্যের জন্য ধন্যবাদ! তবে আমি 0 টি ঘটনা পাচ্ছি, আপনার পরামর্শ অনুসারে পৃথক কীওয়ার্ড দিয়ে আমি এটি করার চেষ্টা করেছি এবং এটি কার্যকর হয়নি, আমিও তাদের আগে যেমন ছিল তেমন চেষ্টা করেছি এবং কিছুই হয়নি, দয়া করে আমার স্ক্রিন ক্যাপচারটি পরীক্ষা করুন: goo.gl/eZ7Kp
গ্যাব্রিয়েল

এই রেজেক্সে কাজ করা উচিত: (\b\w+\b)\W+\1দুটি নকল শব্দের জন্য। আমি আমার উত্তর সম্পাদনা করব। কমাগুলি হ'ল কেন অন্যান্য রেজেক্স কাজ করে না।
amiregelz

আমি প্রতিটি সম্ভাব্য সংমিশ্রণ চেষ্টা করেছি, কোন কমা নেই, কেবলমাত্র ফাঁকা স্থান নেই, কোনও স্থান এবং কমা নেই, এবং এখনও কিছুই নেই। দয়া করে আমাকে আলোকিত করুন, এখানে পাঠ্য ফাইলটি রয়েছে: goo.gl/sP20z
গ্যাব্রিয়েল

সমস্যা হলো রেগুলার এক্সপ্রেশন আমি আমার উত্তর লিখেছে শুধুমাত্র ফরম্যাট (আমি ভেবেছিলাম) আপনার জন্য জিজ্ঞাসা করা প্রযোজ্য হয়: word, word, anotherword। যাইহোক, আপনার অনেকগুলি উদাহরণ রয়েছে যা কিছুটা আলাদা, যেমন came across, came acrossএবং কিছু 3 বা 4 শব্দের সাথে। এছাড়াও সাথে শব্দগুলো আছে 'মত don'tএবং এটি কিছু আরও জটিল করে তোলে নোটপ্যাড ++, Regex সিস্টেম । নোটপ্যাড ++ রিজেক্স সিস্টেমটিও বেশ বিরক্তিকর এবং পাশাপাশি সীমাবদ্ধ, সুতরাং সমাধানটি হল হয় হয় পাইথন (বা অন্য কোনও ভাষা) এ রেজেক্স ব্যবহার করা, বা নোটপ্যাড ++ এর জন্য ফর্ম্যাট-নির্দিষ্ট নিয়মিত প্রকাশ করা।
amiregelz

আর একটি সমস্যা হ'ল নকল হওয়া বেশিরভাগ শব্দগুলি পূর্ববর্তী লাইনেও উপস্থিত হয়, যা আপনার লক্ষ্য অর্জনে অসুবিধা সৃষ্টি করে। আপনি যদি সমস্ত নকল শব্দ মুছে ফেলতে চান , তবে এটি এতটা কঠিন ছিল না। আপনি এই এবং এই জাতীয় কিছু করতে পারেন । আমি আপনাকে নোটপ্যাড ++ এ নির্দিষ্ট নিয়মিত এক্সপ্রেশন ব্যবহার করার পরামর্শ দিচ্ছি (আমি আপনাকে সাহায্য করতে পারি, কেবল আমাকে ডুপ্লিকেট করা শব্দের সমস্ত ফর্ম্যাট বলি) বা আপনার সমস্যার ভিন্ন পদ্ধতির বিষয়টি বিবেচনা করুন।
amiregelz

1

কাজটি করার একটি উপায় এখানে, এটি সমস্ত সদৃশ শব্দের সংলগ্ন না হলেও এটি প্রতিস্থাপন করবে:

  • Ctrl+ +H
  • কি সন্ধান করুন: (?:^|\G)(\b\w+\b),?(?=.*\1)
  • প্রতিস্থাপন: LEAVE EMPTY
  • চারপাশে মোড়ানো চেক করুন
  • নিয়মিত অভিব্যক্তি পরীক্ষা করুন
  • চেক করবেন না . matches newline
  • Replace all

ব্যাখ্যা:

(?:^|\G)    : non capture group, beginning of line or position of last match
(\b\w+\b)   : group 1, 1 or more word character (ie. [a-zA-Z0-9_]), surrounded by word boundaries
,?          : optional comma
(?=.*\1)    : positive lookahead, check if thhere is the same word (contained in group 1) somewhere after

এর মতো একটি ইনপুট দেওয়া হয়েছে: dangerous,dangerous,hazardous,perilous,dangerous,dangerous,hazardous,perilous

আমরা পেয়েছি:

dangerous,hazardous,perilous
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.