ইম্যাকস আলাইন-রেজিপ্স্প বোঝা


31

আমি এর জন্য ইমাস ডকুমেন্টেশন পড়েছি align-regexpতবে এটি কীভাবে কাজ করে তা বুঝতে এখনও অসুবিধা রয়েছে। আমি যে বিষয়টির কথা বলছি তা এর প্রাক্সিকৃত ফর্ম C-uM-xalign-regexp, সাধারণ ফর্ম নয় M-xalign-regexp। আমার প্রশ্নগুলি এখানে:

  • প্রথম প্যারামিটারের (রেজেক্স) স্ট্রিংয়ের পুরো লাইনের সাথে মেলে? যদি রেজেক্স কেবল স্ট্রিংয়ের একটি অংশের সাথে মেলে?
  • দ্বিতীয় প্যারামিটারে কী সরবরাহ করবেন (সংশোধন করার জন্য পেরেন্টেসিস গ্রুপটি (নেতিবাচক হলে ন্যায়সঙ্গত))? আমি যেমন এখানে বুঝতে পারি আমাকে একটি বন্দী গ্রুপ নম্বর সরবরাহ করা প্রয়োজন (1 থেকে গণনা করা), তাই না? "নেতিবাচক হলে ন্যায্যতা দেয়" তার অর্থ কি, আমি যদি গ্রুপ 3 থেকে ডানদিকে প্রান্তিকভাবে চাই, তবে আমি -3ইনপুট হিসাবে সরবরাহ করব ?
  • "ব্যবধানের পরিমাণ (বা negativeণাত্মক হলে কলাম)" তৃতীয় প্যারামিটারটির অর্থ কী? এই প্যারামিটারটি কী করে আমি পুরোপুরি বুঝতে পারি না।

অনুশীলনের জন্য আমি কিছু পাঠ্য উদাহরণ সংগ্রহ করেছি। যদি কেউ নীচের পাঠ্য উদাহরণ হিসাবে ব্যবহার করতে পারেন তবে এটি খুব সহায়ক হবে।


থেকে

class CreateStudents < ActiveRecord::Migration
  def change
    create_table :students, :comment => "学生信息表" do |t|
      t.string :political_status, :comment => "政治面貌"
      t.string :education_level, :comment => "培养层次"
      t.string :enroll_method, :comment => "入学方式"
      t.date :enrolled_at, :comment => "入学时间"
      t.string :charge_type, :comment => "收费类别"
      t.string :enrolled_year, :comment => "学籍年度"
      t.string :enrolled_place, :comment => "生源所在地"
      t.string :bank_card_number, :comment => "银行卡号"
      t.string :bank_account_number,  :comment => "银行账号"
      t.boolean :is_active_duty, :default => false, :comment => "是否现役军人"
      t.boolean :is_equivalent_degree, :default => false, :comment => "是否同等学历"
      t.boolean :is_on_record, :default => true, :comment => "是否在籍"
      t.boolean :is_at_school, :default => true, :comment => "是否在校"
      t.timestamps
    end
  end
end

থেকে

class CreateStudents < ActiveRecord::Migration
  def change
    create_table :students, :comment => "学生信息表" do |t|
      t.string  :political_status,     :comment => "政治面貌"
      t.string  :education_level,      :comment => "培养层次"
      t.string  :enroll_method,        :comment => "入学方式"
      t.date    :enrolled_at,          :comment => "入学时间"
      t.string  :charge_type,          :comment => "收费类别"
      t.string  :enrolled_year,        :comment => "学籍年度"
      t.string  :enrolled_place,       :comment => "生源所在地"
      t.string  :bank_card_number,     :comment => "银行卡号"
      t.string  :bank_account_number,  :comment => "银行账号"
      t.boolean :is_active_duty,       :default => false,  :comment => "是否现役军人"
      t.boolean :is_equivalent_degree, :default => false,  :comment => "是否同等学历"
      t.boolean :is_on_record,         :default => true,   :comment => "是否在籍"
      t.boolean :is_at_school,         :default => true,   :comment => "是否在校"
      t.timestamps
    end
  end
end

থেকে

my @primes = (
    1,2,3,5,7,
    11,13,17,19,23,
    29,31,37,41,43,
);

থেকে

my @primes = (
    1,  2,  3,  5,  7,
    11, 13, 17, 19, 23,
    29, 31, 37, 41, 43,
);

উত্তর:


31

ঠিক আছে, প্রথমে প্রান্তিককরণ এবং তারপরে এটি কীভাবে কাজ করে তার ব্যাখ্যা।

, প্রথম এক সারিবদ্ধ লাইন নির্বাচন করুন, না C-u M-x align-regexpএবং নির্বাচন করুন: \(\s-*\):, 1, 1, এবং y

দ্বিতীয়, ব্যবহারের জন্য ,\(\), 1, 1, এবং y

কিভাবে এটা কাজ করে:

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

উদাহরণস্বরূপ, প্রথম কেস থেকে কিছু লাইন নেওয়া:

  t.string( ):enroll_method, :comment => "入学方式"
  t.date( ):enrolled_at, :comment => "入学时间"
  t.boolean( ):is_active_duty, :default => false, :comment => "是否现役军人"

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

এটি কতগুলি স্পেস যুক্ত করবে (বা মুছবে) তৃতীয় প্যারামিটার দ্বারা সেট করা হয়েছে, "ফাঁকের পরিমাণ"। এই প্যারামিটারটির প্রকৃত অর্থ, প্রথম বন্ধনী গোষ্ঠীর "প্রাকৃতিক" দৈর্ঘ্য কত হওয়া উচিত। যে লাইনে প্রান্তিককরণের প্রয়োজন নেই, এটি ঠিক এই দৈর্ঘ্য হবে।

উদাহরণস্বরূপ, দ্বিতীয় ক্ষেত্রে, আপনি যদি রেজিএক্সএক্স \(,\), ফাঁক দিয়ে সারিবদ্ধ হওয়া চয়ন করেন তবে আপনি 1দেখতে পাবেন যে দ্বিতীয় এবং তৃতীয় লাইনে কোনও স্থান যুক্ত করা হয়নি, কারণ কমাটি ইতিমধ্যে 1 এর "স্পেসিং" সরবরাহ করে।

সুতরাং, পুনরুদ্ধার করতে:

  • regexp: আপনি সারিবদ্ধকরণে আগ্রহী সেই জায়গার সাথে মিল দিন; এটি করার জন্য, এর একটি বন্ধনী গোষ্ঠী ফাঁকা স্থান দিয়ে প্রসারিত হবে, বা অক্ষর মুছে ফেলা হবে
  • প্রথম বন্ধনী: কোনটি চয়ন করুন
  • ব্যবধান: গ্রুপটি যদি এর চেয়ে স্বল্প হয় তবে এর সাথে স্পেস যুক্ত করা হবে; যদি এটি দীর্ঘ হয় তবে এর শেষে অক্ষরগুলি মুছে ফেলা হবে (যদি না এটি প্রান্তিককরণের উদ্দেশ্যে না হয় তবে অবশ্যই)
  • পুনরাবৃত্তি: ভাল, এটা সুস্পষ্ট, আমি মনে করি

প্যারামিটার ভেরিয়েন্টস (বিয়োগ চিহ্ন সারণী)

  • ন্যায্যতা: গোষ্ঠীর অভ্যর্থনাবিহীন অক্ষরগুলি মুছে ফেলা হবে না এবং প্রয়োজনীয় স্থানগুলি বাম থেকে যুক্ত / মোছা হবে। আপনার দ্বিতীয় ক্ষেত্রে, চেষ্টা করুন: regexp \([0-9]+\), গ্রুপ -1
  • কলাম (ব্যবধানের পরিবর্তে): স্থির কলামটিতে প্রান্তিককরণ করুন (অবশ্যই এটি "পুনরাবৃত্তি" দিয়ে ভাল কাজ করে না)।

1

মূল প্রশ্নের গভীর উত্তর নয়, তবে আমি লিখেছি এই বিট কোডটি এখনও প্যারামিটারগুলি কীভাবে কাজ করে তা বোঝার ক্ষেত্রে অবদান রাখতে পারে (কোডে)। লিঙ্কটি এখানে


এখানে কোডটি পোস্ট করুন / ব্যাখ্যা করুন; লিঙ্কটি কেবল মারা গেলে উত্তরগুলি সমস্যাযুক্ত হতে পারে। আপনি যদি এটির পরিবর্তে লিঙ্কটিই রেখে দেন তবে দয়া করে একটি মন্তব্যে উত্তরটি রূপান্তর করুন।
ড্যান

ভাল এটি অন্য emacs.stackexchange উত্তরের লিঙ্ক - যদি তা মরে যায়, আপনিও এই উত্তরটি দেখতে পাবেন না! (আমি সম্মত হই যে এই উত্তরটি একটি মন্তব্যের মতো মনে হচ্ছে)।
ফিলস

1
আমি এটিকে মন্তব্য, উত্তর, কোডের কিছু অংশ বা আপনি যা পছন্দ করেন তা হিসাবে পোস্ট করে খুশি (এমনকি এটি মুছে ফেলা আমার বিরক্ত করবে না)। আমি কেবল সাহায্য করার চেষ্টা করছিলাম, এবং আমার মতো নবজাতকের পক্ষে ন্যূনতম বিরক্তিকর প্রোটোকল পাথগুলি সনাক্ত করা কঠিন (যদিও আমি চেষ্টা করে দেখি) - মনে হয়েছিল যে আমার "উত্তর" কোনও উত্তরের চেয়ে বিকল্প দৃষ্টিভঙ্গির চেয়ে বেশি ছিল অন্যের পোস্টিংগুলিতে মন্তব্য করুন, এ কারণেই আমি এটি আমার পোস্টের মতো পোস্ট করেছিলাম to লাইটটি আমার কোড বনাম কেবল লিঙ্কটি পোস্ট করে লিঙ্কটি ব্যাখ্যা করার জন্য I কেভিন
কেভিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.