গুগল ডক্স রেজেেক্স প্রতিস্থাপনে গ্রুপগুলি ক্যাপচার থেকে পাঠ্য কীভাবে ব্যবহার করবেন?


12

আমি নির্দিষ্ট পাঠ্যের সাথে মেলানোর চেষ্টা করছি এবং তারপরে পাঠ্যের সাথে আরও কিছু অতিরিক্ত অক্ষর প্রতিস্থাপন করব। সর্বনিম্ন উদাহরণ পাঠ্য:

#10 Oranges. These are citrus fruits

পছন্দসই আউটপুট:

#10 Oranges. These are citrus fruits

Regex: (#\d{1,2}[^.]*\.)\s*

প্রতিস্থাপন: $1\n

(আমি Match using regular expressionsপরীক্ষা করেছি)

রেজেক্স সফলভাবে মেলে #10 Oranges.। তবে নম্বরযুক্ত ব্যাকেরেফারেন্স ক্যাপচার গ্রুপটির সাথে পাঠ্যটি প্রতিস্থাপন করে না তবে কেবল অক্ষরে অক্ষরে চলে যায় (আক্ষরিক আউটপুট হয় $1\n)। আমি সংখ্যাযুক্ত পিছনের জন্য একটি ব্যাকস্ল্যাশ ব্যবহার করার চেষ্টা করেছি \1এবং ফলাফল একই।

আমি কি অনুপস্থিত কিছু আছে? আমি কীভাবে নিয়মিত এক্সপ্রেশন ব্যবহার করে গুগল ডক্সে মিলিত পাঠ্য পুনরায় সন্নিবেশ করবো?


2
দস্তাবেজ এখন স্পষ্টভাবে রাজ্য: Note: Capture groups only work with Google Sheets.দেখুন support.google.com/docs/answer/62754#regular_expressions
ব্যবহারকারী

উত্তর:


4

সংক্ষিপ্ত উত্তর

বিল্ট-ইন ফাইন্ড এবং ফাংশনটি প্রতিস্থাপনের পরিবর্তে গুগল অ্যাপস স্ক্রিপ্ট বা একটি অ্যাড-অন ব্যবহার করুন।

ব্যাখ্যা

গুগল ডকুমেন্টসের সন্ধান এবং প্রতিস্থাপন বৈশিষ্ট্যটিতে, প্রতিস্থাপন অংশটি নিয়মিত প্রকাশের সাথে কাজ করে না এবং এটি replaceText()গুগল অ্যাপস স্ক্রিপ্টে নথিপত্র পরিষেবা থেকে পদ্ধতিটির সাথেও কাজ করে না ভাগ্যক্রমে জাভাস্ক্রিপ্ট পদ্ধতিটির কাজগুলি প্রতিস্থাপন করে।

একটি সাধারণ স্ক্রিপ্ট তৈরি করতে খুব বেসিকগুলি জানতে, https://developers.google.com/apps-script/overview দেখুন

কোড

এই কোডটি রেফারেন্সের অন্তর্ভুক্তটির একটি রূপান্তর

function myFunction() {
  var body = DocumentApp.getActiveDocument().getBody();
  var paragraphs = body.getParagraphs();
  for (var i=0; i<paragraphs.length; i++) {
    var text = paragraphs[i].getText();
    paragraphs[i].replaceText(".*", 
       text.replace(/(\d{1,2}[^.]*\.)\s*/gi, '$1\n') );
  }
}

তথ্যসূত্র


3
আমি এটি খতিয়ে বিবেচনা করব, কিন্তু বাস্তবটি কি প্রতিস্থাপনটি একটি বাগের সাথে রেগেক্সের কাজ করে না? এই ডকুমেন্টেশন অনুসারে, এটি দেখে মনে হচ্ছে এটি কাজ করা উচিত: support.google.com/docs/answer/62754#regular_expressions (বিভাগটি দেখুন Replace with regular expressions)
ব্যবহারকারী

2

ছোট্ট হ্যাকি, তবে এটিতে স্ক্রিপ্টে অতিরিক্ত সংযোজন লাগবে না এবং সম্ভবত আপনার ব্যবহারের 99% কেস কভার করবে। আপনি RegexReplaceএরপরে $1বা কপির সাথে প্রতিস্থাপন পাঠ্যের সাথে ক্যাপচার গ্রুপগুলি এবং রেফারেন্স ব্যবহার করতে পারেন $2। আপনার রেজেক্সকে কেবল দুটি ক্যাপচার গ্রুপে বিভক্ত করুন এবং এলোমেলো (খুব কম ব্যবহৃত) চরিত্রের সাথে সংযুক্ত করে নিন ~। তারপরে আপনি এটি থেকে পুরো ফেরত মানটি নিতে পারেন এবং ~একটি নতুন লাইন দিয়ে প্রতিস্থাপন করতে পারেন :

=SUBSTITUTE(REGEXREPLACE(A1,"(#\d{1,2}[^.]*\.)(\s*)","$1~$2"),"~",CHAR(10))

স্ক্রিনশট

গুগল শিটগুলিতে ব্যবহৃত রেজেক্স সিনট্যাক্স সম্পর্কে আরও তথ্যের জন্য, রি 2 স্পেসটি দেখুন


প্রশ্নটি যতদূর আমি বুঝতে পেরেছি, শীট নয়, ডক্স সম্পর্কে।
törzsmókus

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