একাধিক লাইন নোটপ্যাড ++ এ প্রতিস্থাপন এবং বহন করে


2

নীচের উদাহরণগুলির সাথে দৃষ্টান্তমূলক কিছু সহ আমার কাছে বেশ কয়েকটি পাঠ্য ফাইল রয়েছে:

{
    {
        1,
        text1,
        text2,
    }
}
{
    {
        52,
        text1,
        text2,
    }
}
{
    {
        105,
        text1,
        text2,
    }
}

আমি অবাক হয়েছি যে আমি কীভাবে বেশ কয়েকটি ফাইলের মাধ্যমে ব্যাপক অনুসন্ধান করতে এবং সেগুলি নীচে স্থানান্তর করতে পারি:

{
    {
        17001,
        text1,
        text2,
    }
}
{
    {
        17052,
        text1,
        text2,
    }
}
{
    {
        17105,
        text1,
        text2,
    }
}

মূলত আমি প্রতিটি ডাবল খোলার বন্ধনীগুলির পরে প্রথম সংখ্যার সাথে 17,000 যুক্ত করব। আমি 17 \ d \ d \ d এর সাথে সংখ্যার প্রতিস্থাপন করতে \ d \ d \ d ব্যবহার করার চেষ্টা করেছি তবে তারপরে এটি আমাকে 17dd নম্বরটি দিয়ে যাবে। অনুগ্রহ করে সাহায্য করবেন


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

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

নোটপ্যাড ++ রিজেক্সএক্স অনুসন্ধান / প্রতিস্থাপনে পাটিগণিত করতে পারে না। আপনি পাইথন প্লাগইন ব্যবহার করে কিছু করতে সক্ষম হতে পারেন তবে প্রোগ্রামিং প্রশ্নগুলি এখানে অফ-টপিক।
ডেভিডপস্টিল

@ ডেভিডপস্টিল কেবলমাত্র আপনার যদি ছোট্ট কল্পনা থাকে। প্রতিটি সম্ভাব্য পাটিগণিত ফলাফলের জন্য কেবল একটি প্রতিস্থাপন নির্দিষ্ট করুন (অর্থাত্ 18 টির সাথে 1, 2 এর সাথে 19, 3 সহ 20 ইত্যাদি)। দুহ;)
এসিআর

উত্তর:


3

আপনার দুটি সমস্যা আছে:

  1. প্রতিস্থাপনের স্ট্রিংয়ের \dঅর্থ "একটি মুদ্রণ করুন d" এবং আরও কিছু নয়। সমস্ত নিয়মিত এক্সপ্রেশন বিশেষ জিনিস যেমন \dএবং \wইত্যাদি কেবল অনুসন্ধানের প্যাটার্নে কাজ করে, প্রতিস্থাপনের স্ট্রিং নয়।
  2. @ ডেভিডপস্টিল যেমন বলেছিলেন, নোটপ্যাড ++ রিজেক্সএক্স অনুসন্ধান / প্রতিস্থাপনে গণিত করতে পারে না।

আপনি যা চান তা করতে আপনার কাছে তিনটি বিকল্প রয়েছে:

  1. আপনার জন্য প্রতিস্থাপনগুলি করতে কিছু প্রোগ্রাম, স্ক্রিপ্ট বা প্লাগইন ব্যবহার করুন। এর যে কোনও সংস্করণ যেমন পূর্ব বর্ণিত মন্তব্য বলেছে, এখানে অফ-টপিক।
  2. নোটপ্যাড ++ অনুসন্ধান ব্যবহার করুন এবং 3 বার প্রতিস্থাপন করুন।
    • একক অঙ্কের জন্য একটি গোল,
    • দুটি সংখ্যার জন্য দুটি গোল, এবং
    • তিন অঙ্কের জন্য তিনটি বৃত্তাকার।
  3. আপনার যদি নোটপ্যাড ++ ভিএইচ.0 এর চেয়ে বেশি থাকে তবে আপনি রেজিপ্সেপিতে পিসিআরই সিনট্যাক্স ব্যবহার করতে পারেন, এবং এটি সমস্ত পাসের জন্য @ACR দ্বারা দুর্দান্ত উত্তরটি ব্যবহার করতে পারেন।

তিন-পাস পদ্ধতিতে এটি সম্পাদন করতে, নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন। আপনি যা চান তার ফাঁদে পেতে আপনাকে কেবল অনুসন্ধানের প্যাটার্নগুলি সংশোধন করতে হতে পারে এবং কেবল আপনি যা চান। আপনি উপরে যে নমুনা সরবরাহ করেছেন তাতে তারা কাজ করে তবে আপনার ফাইলগুলি নমুনার চেয়ে জটিল হতে পারে।

প্রথম রাউন্ড

এটি খুঁজুন:

(\s+)(\d),

এটি দিয়ে প্রতিস্থাপন করুন:

\11700\2,

দুই পর্ব

এটি খুঁজুন:

(\s+)(\d\d),

এটি দিয়ে প্রতিস্থাপন করুন:

\1170\2,

তিন রাউন্ড

এটি খুঁজুন:

(\s+)(\d\d\d),

এটি দিয়ে প্রতিস্থাপন করুন:

\117\2,

এর মানে কি

ইন Find thisপ্যাটার্ন \s+সব হোয়াইটস্পেস পরবর্তী টোকেন সামনে পাওয়া যাবে, একটি সংখ্যা হোয়াইটস্পেস ছাড়া আর কিছু নিম্নলিখিত mathching প্রতিরোধ অন্তত একটি প্রয়োজন খুঁজে বের করে। ()এটি প্রায় প্রথম বন্দী ম্যাচ দ্বারা ফিরে স্ট্রিং আছে। \dম্যাচ একটি ডিজিট এবং গোষ্ঠীতে \d\dএবং \d\d\dএটি 2 বা তিনটি সংখ্যা মেলে, ঠিক, পরিবর্তে ভুলবেন না। আবার ()এটি ক্যাপচারিং গ্রুপে পরিণত করুন, এবার দ্বিতীয়টি। পরিশেষে ,সংখ্যাগুলির পরে কমা মেলে যা এটি আপনার নমুনা ফাইলে একই লাইনে রাখে।

এর মধ্যে Replace with this, \1প্রথম ক্যাপচারিং গ্রুপ (স্পেসস) দ্বারা প্রতিস্থাপিত হয়। 1700, 170এবং 17লাইনে যুক্ত হওয়া অংশটি মুদ্রণ করুন। \2দ্বিতীয় ক্যাপচারিং গ্রুপ, যা অঙ্ক (গুলি) আপনার খোঁজ প্যাটার্ন আছে যে দ্বারা প্রতিস্থাপিত হয়। অবশেষে কমাটি এর ,জন্য ক্যাপচারিং গ্রুপ নষ্ট না করে স্পষ্টতই প্রতিস্থাপন করা হয়।


2

আপনি একক অনুসন্ধান এবং প্রতিস্থাপনের মাধ্যমে এটি সম্পাদন করতে পারেন। নোটপ্যাড ++ আপনাকে গ্রুপের সাথে মিলেছে কিনা তার ভিত্তিতে শর্তযুক্ত প্রতিস্থাপনের অনুমতি দেয়।

কি সন্ধান করুন:

^(\s*)(\d{3})?(\d{2})?(\d{1})?(,\s*)$

প্রতিস্থাপন:

$1(?{2}17$2)(?{3}170$3)(?{4}1700$4)$5

ফাইন্ড-এক্সপ্রেশন এর ব্যাখ্যা

বাইরের দিক থেকে অভ্যন্তরের দিকে অগ্রসর হওয়া:

  • ^এবং $অক্ষর শুরুতে এবং একটি লাইন সমাপ্তি চিহ্নিত যথাক্রমে।
  • (\s*)ম্যাচ শুরুতে হোয়াইটস্পেস এবং (,\s*)ম্যাচ কমা এবং লাইন শেষে কোনো trailing হোয়াইটস্পেস।
  • মাঝখানে আমাদের তিনটি আলাদা গ্রুপ রয়েছে 3, 2 বা 1 ডিজিটের ( {n}সিনট্যাক্স ব্যবহার করে ) মেলাতে । প্রতিটি গ্রুপ এটিকে অনুসরণ করে ?সম্ভবত এটি মিলছে না হিসাবে চিহ্নিত করা হয়। গোষ্ঠীগুলির ক্রমটি গুরুত্বপূর্ণ, যেহেতু গোষ্ঠীগুলির উপস্থিত ক্রমগুলি মিল রয়েছে। যদি তিনটি সংখ্যা থাকে তবে প্রথম গ্রুপটি মিলবে এবং নিম্নলিখিত দুটি গ্রুপের দুটি ম্যাচের জন্য কোনও সংখ্যা অবশিষ্ট থাকবে না। যদি দুটি অঙ্ক থাকে তবে প্রথম গ্রুপটি ম্যাচ করতে ব্যর্থ হবে, দ্বিতীয় গ্রুপটি মিলবে এবং প্রথম গোষ্ঠীর সাথে ম্যাচ করার জন্য কোনও সংখ্যা থাকবে না।

প্রতিস্থাপন-এক্সপ্রেশন এর ব্যাখ্যা

  • $1এবং $5লাইন এবং লাইনের শেষে কমা এবং হোয়াইটস্পেস শুরুতে হোয়াইটস্পেস ম্যাচ হবে।
  • নিম্নলিখিত গোষ্ঠী (বিপরীত অর্ডার পরিশেষে যোগ "17" প্লাস কোন গোষ্ঠীতে খোঁজ-এক্সপ্রেশনে মিলেছে ওপর নির্ভরশীল ছিল শূন্যর সঠিক সংখ্যা তালিকাভুক্ত। উদাহরণস্বরূপ, প্রথম দল নিতে (?{2}17$2)?{2}কি না দেখার জন্য গ্রুপ 2 বা মিলেছে ছিল না চেক যদি তা হয় তবে এটি নীচের পাঠ্যটি সন্নিবেশ করায়: "17" এর সাথে গ্রুপ 2 এর ম্যাচ, যা তিন অঙ্কের সংখ্যা হওয়া উচিত।

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